import { describe, expect, it } from "vitest"; import { resource } from "@/test/resource"; import { section } from "./section"; describe("instrument source and transport presentation", () => { it.each([ ["initial-loading", "incomplete"], ["available", "complete"], ] as const)( "keeps %s separate from successful transport", (availability, completeness) => { const data = availability === "initial-loading" ? undefined : { rows: [] }; const state = section({ data, isError: false, meta: resource(data, { availability, completeness }).meta, }); expect(state.loading).toBe(availability === "initial-loading"); expect(state.partial).toBe(completeness === "incomplete"); expect(state.hasData).toBe(availability !== "initial-loading"); }, ); it("preserves empty successful data instead of treating it as missing", () => { const state = section({ data: [], isError: false, meta: resource([]).meta, }); expect(state).toMatchObject({ error: false, hasData: true, loading: false, }); }); it("preserves a full source when force fails", () => { const meta = resource([], { lastAttempt: { finishedAt: "2026-08-14T00:01:00Z", problems: [], startedAt: "2026-08-14T00:00:00Z", state: "failed", }, }).meta; const state = section({ data: [], isError: false, meta }); expect(state).toMatchObject({ error: true, hasData: true, loading: false, }); }); it("shows source failure without a false loading or empty result", () => { const state = section({ data: undefined, isError: false, meta: resource(null, { lastAttempt: { finishedAt: "2026-08-14T00:01:00Z", problems: [], startedAt: "2026-08-14T00:00:00Z", state: "failed", }, }).meta, }); expect(state).toMatchObject({ error: true, hasData: false, loading: false, }); }); });