{"version":3,"file":"citation.test.d.ts","sourceRoot":"","sources":["../../../src/core/web-research/citation.test.ts"],"names":[],"mappings":"","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { buildClaimSupport, exactClaimLocatorError } from \"./citation.js\";\n\nconst RECORD = {\n\tevidenceId: \"web-1\",\n\tcanonicalUrl: \"https://docs.example.com/weapon\",\n\ttitle: \"Weapon data\",\n\tretrievedAt: \"2026-08-02T00:00:00.000Z\",\n\tpublishedAt: \"2026-07-01T00:00:00.000Z\",\n\tcontentSha256: \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n\trelevantPassages: [{ id: \"passage-1\", text: \"damage 225\", startLine: 12, endLine: 12 }],\n};\n\ndescribe(\"addressable citations\", () => {\n\tit(\"builds a direct support with coordinates and evidence identity\", () => {\n\t\tconst support = buildClaimSupport(\"claim-1\", RECORD, { supportType: \"direct\" });\n\t\texpect(support.evidenceId).toBe(\"web-1\");\n\t\texpect(support.sourceUrl).toBe(\"https://docs.example.com/weapon\");\n\t\texpect(support.contentSha256).toBe(RECORD.contentSha256);\n\t\texpect(support.locator.kind).toBe(\"lines\");\n\t\texpect(support.locator.start).toBe(12);\n\t\texpect(support.locator.end).toBe(12);\n\t\texpect(exactClaimLocatorError(support)).toBeUndefined();\n\t});\n\n\tit(\"rejects an exact claim whose line locator has no coordinates\", () => {\n\t\tconst support = buildClaimSupport(\"claim-2\", RECORD, {\n\t\t\tsupportType: \"direct\",\n\t\t\tlocatorOverride: { kind: \"lines\" },\n\t\t});\n\t\texpect(support.locator.start).toBeUndefined();\n\t\tconst error = exactClaimLocatorError(support);\n\t\texpect(error).toBeDefined();\n\t\texpect(error).toContain(\"locator\");\n\t});\n\n\tit(\"renders a page locator for PDF evidence\", () => {\n\t\tconst support = buildClaimSupport(\"claim-3\", RECORD, {\n\t\t\tsupportType: \"direct\",\n\t\t\tlocatorOverride: { kind: \"page\", page: 4 },\n\t\t});\n\t\texpect(support.locator.kind).toBe(\"page\");\n\t\texpect(support.locator.page).toBe(4);\n\t\texpect(exactClaimLocatorError(support)).toBeUndefined();\n\t});\n\n\tit(\"labels snippet-only support and does not require coordinates\", () => {\n\t\tconst support = buildClaimSupport(\"claim-4\", RECORD, { supportType: \"snippet_only\" });\n\t\texpect(support.supportType).toBe(\"snippet_only\");\n\t\texpect(exactClaimLocatorError(support)).toBeUndefined();\n\t});\n});\n"]}