Expose ARR disclosure gaps before statistical comparison
This commit is contained in:
@@ -11,7 +11,26 @@ import { openSiteDatabase } from "../src/lib/site-database";
|
||||
import { categorySummary, evidenceUrl, reviewCompanyIds, validateResearch, type ResearchSnapshot } from "../src/lib/ai-research";
|
||||
import { consumeCode, initializeStore } from "../src/lib/auth-store";
|
||||
import { newAuthConfig } from "../src/lib/auth";
|
||||
import { arrDisclosureCoverage, arrDisclosures, compareIncomeGroups, describeIncome, groupIncome, platformIncomeSample } from "../src/lib/research-statistics";
|
||||
import { arrDisclosureCoverage, arrDisclosures, arrFieldGaps, compareIncomeGroups, describeIncome, groupIncome, platformIncomeSample } from "../src/lib/research-statistics";
|
||||
|
||||
test("ARR field checks distinguish missing dates, other currencies, bounds and estimates", () => {
|
||||
const observation = { ...seed.observations[0], metric: "arr", unit: "USD", value: 100,
|
||||
bound: "=", selection: "signal", observedAt: "2026-10-30" } as ResearchSnapshot["observations"][number];
|
||||
assert.deepEqual(arrFieldGaps(observation, "2026-10-31"), []);
|
||||
for (const observedAt of [undefined, "2026-02-30", "2026-11-01"])
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, observedAt }, "2026-10-31"), ["date"]);
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, unit: "EUR" }, "2026-10-31"), ["currency"],
|
||||
"known foreign currencies stay distinct without an invented USD conversion");
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, unit: "原文$,币种待核", bound: ">",
|
||||
selection: "historical-estimate", observedAt: undefined }, "2026-10-31"), ["date", "currency", "amount", "estimate"]);
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, value: Number.NaN }, "2026-10-31"), ["amount"]);
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, value: -1 }, "2026-10-31"), ["amount"]);
|
||||
assert.deepEqual(arrFieldGaps({ ...observation, value: 0 }, "2026-10-31"), [], "disclosed zero is a valid amount");
|
||||
const rows = arrDisclosures(seed as ResearchSnapshot);
|
||||
assert.ok(rows.length > 0);
|
||||
assert.ok(rows.every(({ observation: claim }) => arrFieldGaps(claim, seed.asOf).length > 0),
|
||||
"the current ledger cannot be described as a complete dated exact USD sample");
|
||||
});
|
||||
|
||||
test("income interpretations compare sufficient samples within a provider and known billing model", () => {
|
||||
const snapshot = structuredClone(seed) as ResearchSnapshot;
|
||||
|
||||
Reference in New Issue
Block a user