mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 17:30:31 +00:00
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
parseRestoredThreadState,
|
|
transitionRestoredThreadLifecycle,
|
|
} from "../../../../../src/features/chat/application/threads/restored-thread-lifecycle";
|
|
|
|
describe("transitionRestoredThreadLifecycle", () => {
|
|
it("clears restored-thread loading only for the active loading promise", () => {
|
|
const firstLoading = Promise.resolve();
|
|
const secondLoading = Promise.resolve();
|
|
const placeholder = transitionRestoredThreadLifecycle(
|
|
{ kind: "idle" },
|
|
{ type: "placeholder-restored", restoredThread: { threadId: "thread", title: "Old", explicitName: null } },
|
|
);
|
|
const loading = transitionRestoredThreadLifecycle(placeholder, { type: "loading-started", loading: secondLoading });
|
|
|
|
expect(transitionRestoredThreadLifecycle(loading, { type: "loading-finished", loading: firstLoading })).toBe(loading);
|
|
expect(transitionRestoredThreadLifecycle(loading, { type: "renamed", threadId: "thread", name: "New" })).toMatchObject({
|
|
title: "New",
|
|
explicitName: "New",
|
|
loading: secondLoading,
|
|
});
|
|
expect(transitionRestoredThreadLifecycle(loading, { type: "loading-finished", loading: secondLoading })).toMatchObject({
|
|
kind: "placeholder",
|
|
loading: null,
|
|
});
|
|
});
|
|
|
|
it("parses restored thread view state defensively", () => {
|
|
expect(parseRestoredThreadState({ threadId: "thread", threadTitle: "Title" })).toEqual({
|
|
threadId: "thread",
|
|
title: "Title",
|
|
explicitName: null,
|
|
});
|
|
expect(parseRestoredThreadState({ threadId: "" })).toBeNull();
|
|
expect(parseRestoredThreadState(null)).toBeNull();
|
|
});
|
|
});
|