import assert from "node:assert/strict"; import { readFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; import ts from "typescript"; const testDir = path.dirname(fileURLToPath(import.meta.url)); const sourcePath = path.resolve(testDir, "../src/features/evidence-matrix/model.ts"); const source = readFileSync(sourcePath, "utf8"); const compiled = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022 }, }); const moduleExports = {}; new Function("exports", compiled.outputText)(moduleExports); const { buildEvidenceRows, buildClaimRows, filterUnsupportedClaims, filterClaimsBySection, } = moduleExports; const evidenceRows = buildEvidenceRows([ { id: "e1", article_id: "a1", source_title: "Source", source_url: "https://example.com", source_type: "primary", source_quality_score: 0.9, summary: "Summary", supports_claims: [], artifact_manifest_id: "m1", retrieved_at: "2026-05-21T00:00:00Z", review_status: "APPROVED", }, ]); assert.equal(evidenceRows[0].sourceTitle, "Source"); assert.equal(evidenceRows[0].reviewStatus, "APPROVED"); const claimRows = buildClaimRows([ { id: "c1", article_id: "a1", section_id: "s1", claim_text: "Unsupported", support_status: "UNSUPPORTED", risk_level: "high", evidence_item_ids: [], }, { id: "c2", article_id: "a1", section_id: "s2", claim_text: "Supported", support_status: "SUPPORTED", risk_level: "low", evidence_item_ids: ["e1"], }, ]); assert.equal(filterUnsupportedClaims(claimRows).length, 1); assert.equal(filterClaimsBySection(claimRows, "s2")[0].claimText, "Supported");