import { describe, expect, it } from "vitest";
import { kpiDeltaView, type KpiDeltaView } from "@/lib/format/kpi-delta";
/**
* レポートの KPI カードの前期比(指示書BC 5-3。D-183)。
* ★丸めた数が 0 なら「→」・色なし★(施設別パフォーマンスの「変化」と同じ)。
* ★◎○△× の判定ではない★(前期比の矢印と色は表示。`CLAUDE.md` §4.3 の対象外)。
*/
describe("kpiDeltaView — 矢印・数・色", () => {
const cases: Array<[string, number, boolean, KpiDeltaView]> = [
["K1 0 は横ばい", 0, true, { arrow: "→", percent: 0, tone: "neutral" }],
["K2 +0.4(旧: ▲0 good)", 0.4, true, { arrow: "→", percent: 0, tone: "neutral" }],
["K3 -0.4・下がったら良い(旧: ▼0 good)", -0.4, false, { arrow: "→", percent: 0, tone: "neutral" }],
["K4 +0.5 は丸めて1 → 矢印を出す", 0.5, true, { arrow: "▲", percent: 1, tone: "good" }],
["K5 -0.5 は悪化", -0.5, true, { arrow: "▼", percent: 1, tone: "bad" }],
["K6 エラー発生率は下がったら改善", -2.6, false, { arrow: "▼", percent: 3, tone: "good" }],
["K7 エラー発生率は上がったら悪化", 3, false, { arrow: "▲", percent: 3, tone: "bad" }],
["K8 -0.49 は境界の手前", -0.49, true, { arrow: "→", percent: 0, tone: "neutral" }],
];
it.each(cases)("%s", (_name, diff, betterWhenHigher, expected) => {
expect(kpiDeltaView(diff, betterWhenHigher)).toEqual(expected);
});
});