import { describe, expect, it } from "@effect/vitest"; import { projectThreadContentPresentation } from "./threadContentPresentation"; describe("thread content presentation", () => { it("renders cached detail while its environment reconnects", () => { expect( projectThreadContentPresentation({ hasDetail: true, detailError: null, detailDeleted: false, connectionState: "reconnecting", }), ).toEqual({ kind: "ready" }); }); it("loads missing detail inside the thread screen when connected", () => { expect( projectThreadContentPresentation({ hasDetail: false, detailError: null, detailDeleted: false, connectionState: "connected", }), ).toEqual({ kind: "loading" }); }); it("explains uncached detail while disconnected instead of loading forever", () => { expect( projectThreadContentPresentation({ hasDetail: false, detailError: null, detailDeleted: false, connectionState: "error", }), ).toEqual({ kind: "unavailable", title: "Messages not cached", detail: "Reconnect this environment to load the conversation.", }); }); it("surfaces detail errors before presenting a loading state", () => { expect( projectThreadContentPresentation({ hasDetail: false, detailError: "The thread stream failed.", detailDeleted: false, connectionState: "connected", }), ).toEqual({ kind: "unavailable", title: "Could not load conversation", detail: "The thread stream failed.", }); });});
import { describe, expect, it } from "@effect/vitest";
import { projectThreadContentPresentation } from "./threadContentPresentation";
describe("thread content presentation", () => {
it("renders cached detail while its environment reconnects", () => {
expect(
projectThreadContentPresentation({
hasDetail: true,
detailError: null,
detailDeleted: false,
connectionState: "reconnecting",
}),
).toEqual({ kind: "ready" });
});
it("loads missing detail inside the thread screen when connected", () => {
expect(
projectThreadContentPresentation({
hasDetail: false,
detailError: null,
detailDeleted: false,
connectionState: "connected",
}),
).toEqual({ kind: "loading" });
});
it("explains uncached detail while disconnected instead of loading forever", () => {
expect(
projectThreadContentPresentation({
hasDetail: false,
detailError: null,
detailDeleted: false,
connectionState: "error",
}),
).toEqual({
kind: "unavailable",
title: "Messages not cached",
detail: "Reconnect this environment to load the conversation.",
});
});
it("surfaces detail errors before presenting a loading state", () => {
expect(
projectThreadContentPresentation({
hasDetail: false,
detailError: "The thread stream failed.",
detailDeleted: false,
connectionState: "connected",
}),
).toEqual({
kind: "unavailable",
title: "Could not load conversation",
detail: "The thread stream failed.",
});
});
});