import { describe, expect, it } from "vitest"; import { computeTrust, worstTrustState } from "../src/trust.js"; describe("computeTrust", () => { it("returns trusted for a fresh high-confidence item even without user verification", () => { const result = computeTrust({ confidence: 0.8, verifiedByUser: false, lastVerifiedAt: null, quantity: 2, updatedAt: new Date(), }); expect(result.state).toBe("trusted"); expect(result.score).toBeGreaterThanOrEqual(60); }); it("decays when last verification is old", () => { const thirtyDaysAgo = new Date(Date.now() - 30 * 86_400_000); const result = computeTrust({ confidence: 0.6, verifiedByUser: true, lastVerifiedAt: thirtyDaysAgo, quantity: 1, updatedAt: thirtyDaysAgo, }); expect(result.state).toBe("decaying"); }); it("is stale for very old unverified low-confidence items", () => { const sixtyDaysAgo = new Date(Date.now() - 60 * 86_400_000); const result = computeTrust({ confidence: 0.2, verifiedByUser: false, lastVerifiedAt: null, quantity: 1, updatedAt: sixtyDaysAgo, }); expect(result.state).toBe("stale"); }); it("is trusted when user verified recently", () => { const result = computeTrust({ confidence: 0.7, verifiedByUser: true, lastVerifiedAt: new Date(), quantity: 1, updatedAt: new Date(), }); expect(result.state).toBe("trusted"); expect(result.score).toBeGreaterThanOrEqual(70); }); }); describe("worstTrustState", () => { it("returns stale if present", () => { expect(worstTrustState(["trusted", "stale", "decaying"])).toBe("stale"); }); it("falls back to unverified", () => { expect(worstTrustState(["trusted", "unverified"])).toBe("unverified"); }); });