mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 06:57:10 +00:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import type { ChatShellRenderPort } from "../../../../../src/features/chat/controllers/state-ports";
|
|
import { ChatViewRenderController } from "../../../../../src/features/chat/controllers/view/view-render-controller";
|
|
|
|
describe("ChatViewRenderController", () => {
|
|
it("renders the shell with stable slot delegates", () => {
|
|
const root = {} as HTMLElement;
|
|
const render = vi.fn<ChatShellRenderPort["render"]>();
|
|
const controller = new ChatViewRenderController({
|
|
shell: { render },
|
|
panelRoot: () => root,
|
|
renderToolbar: vi.fn(),
|
|
renderGoal: vi.fn(),
|
|
renderMessages: vi.fn(),
|
|
renderComposer: vi.fn(),
|
|
clearScheduledRender: vi.fn(),
|
|
});
|
|
|
|
controller.render();
|
|
|
|
expect(render).toHaveBeenCalledWith(
|
|
root,
|
|
0,
|
|
expect.objectContaining({
|
|
renderToolbar: expect.any(Function),
|
|
renderGoal: expect.any(Function),
|
|
renderMessages: expect.any(Function),
|
|
renderComposer: expect.any(Function),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("increments the render version when forcing slot rerender", () => {
|
|
const root = {} as HTMLElement;
|
|
const renderVersions: number[] = [];
|
|
const render: ChatShellRenderPort["render"] = vi.fn((_root: HTMLElement, renderVersion: number) => {
|
|
renderVersions.push(renderVersion);
|
|
});
|
|
const controller = new ChatViewRenderController({
|
|
shell: { render },
|
|
panelRoot: () => root,
|
|
renderToolbar: vi.fn(),
|
|
renderGoal: vi.fn(),
|
|
renderMessages: vi.fn(),
|
|
renderComposer: vi.fn(),
|
|
clearScheduledRender: vi.fn(),
|
|
});
|
|
|
|
controller.render();
|
|
controller.renderShellSlots();
|
|
|
|
expect(renderVersions).toEqual([0, 1]);
|
|
});
|
|
});
|