import { describe, expect, it } from "vitest"; import type { CaptureResult } from "../types/global"; import type { ParsedArtifactCandidate, ParsedField } from "./artifactOcrParser"; import { getAutoReviewReason } from "./scanReviewUtils"; function field(value: string): ParsedField { return { value, confidence: 95, source: "ocr" }; } describe("getAutoReviewReason", () => { it("does not require a detail preview image for clean automatic scan captures", () => { const capture: CaptureResult = { id: "window:test", name: "Genshin", width: 1920, height: 1080, dataUrl: "", capturedAt: new Date(0).toISOString(), crops: [{ id: "artifact-name", label: "Artifact name", rect: { x: 0, y: 0, width: 10, height: 10 } }], ocr: [{ id: "artifact-name", label: "Artifact name", text: "Gladiator's Nostalgia", confidence: 95 }], }; const parsed: ParsedArtifactCandidate = { name: "Gladiator's Nostalgia", slot: "Flower of Life", level: 20, mainStat: "HP", mainValue: "4780", substats: ["CRIT Rate", "CRIT DMG", "Energy Recharge", "ATK%"], setName: "Gladiator's Finale", equipped: "", confidence: 95, notes: [], fields: { name: field("Gladiator's Nostalgia"), slot: field("Flower of Life"), level: field("20"), mainStat: field("HP"), mainValue: field("4780"), setName: field("Gladiator's Finale"), equipped: field(""), substats: field("CRIT Rate, CRIT DMG, Energy Recharge, ATK%"), }, }; expect(getAutoReviewReason(capture, parsed)).toBe(""); }); });