diff --git a/packages/language-service/src/features/__fixtures__/diagnostics.html b/packages/language-service/src/features/__fixtures__/diagnostics.html new file mode 100644 index 0000000..0c5d87e --- /dev/null +++ b/packages/language-service/src/features/__fixtures__/diagnostics.html @@ -0,0 +1,6 @@ + +
+ +hello + + diff --git a/packages/language-service/src/features/__fixtures__/hover.viewmodel.ts b/packages/language-service/src/features/__fixtures__/diagnostics.ts similarity index 100% rename from packages/language-service/src/features/__fixtures__/hover.viewmodel.ts rename to packages/language-service/src/features/__fixtures__/diagnostics.ts diff --git a/packages/language-service/src/features/__fixtures__/hover.html b/packages/language-service/src/features/__fixtures__/hover.html index 5c9fd2b..8f33c22 100644 --- a/packages/language-service/src/features/__fixtures__/hover.html +++ b/packages/language-service/src/features/__fixtures__/hover.html @@ -1,3 +1,3 @@ - + diff --git a/packages/language-service/src/features/__fixtures__/hover.ts b/packages/language-service/src/features/__fixtures__/hover.ts new file mode 100644 index 0000000..f15b597 --- /dev/null +++ b/packages/language-service/src/features/__fixtures__/hover.ts @@ -0,0 +1,3 @@ +export default class { + hello = "hello"; +} diff --git a/packages/language-service/src/features/__fixtures__/tsconfig.json b/packages/language-service/src/features/__fixtures__/tsconfig.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/packages/language-service/src/features/__fixtures__/tsconfig.json @@ -0,0 +1 @@ +{} diff --git a/packages/language-service/src/features/diagnostics.spec.ts b/packages/language-service/src/features/diagnostics.spec.ts new file mode 100644 index 0000000..7a432db --- /dev/null +++ b/packages/language-service/src/features/diagnostics.spec.ts @@ -0,0 +1,38 @@ +import { type Diagnostics, LanguageService } from "../index.js"; +import { describe, beforeAll, it, expect } from "@jest/globals"; +import { readFile } from "node:fs/promises"; +import { fileURLToPath } from "node:url"; + +describe("diagnostics", () => { + let diagnostics!: Diagnostics; + + beforeAll(async () => { + const service = new LanguageService({ + worker: false, + }); + const fileName = fileURLToPath( + new URL("__fixtures__/diagnostics.html", import.meta.url), + ); + const text = await readFile(fileName, "utf8"); + await service.openDocument(fileName, text); + diagnostics = await service.getDiagnostics({ + fileName: fileName, + }); + }); + + it("provides standard diagnostics", async () => { + const diagnostic = diagnostics.find( + (diagnostic) => diagnostic.code === "virtual-element-end-notation", + ); + expect(diagnostic).not.toBe(undefined); + expect(diagnostic!.range.start.line).toBe(4); + }); + + it("provides typescript diagnostics", async () => { + const diagnostic = diagnostics.find( + (diagnostic) => diagnostic.code === "ts/2552", + ); + expect(diagnostic).not.toBe(undefined); + expect(diagnostic!.range.start.line).toBe(1); + }); +});