Fas 2 steg 1: Inventory Trust Engine - trust states pa inventory_items
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user