mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 06:57:10 +00:00
Tighten shell rendering regressions
This commit is contained in:
parent
8b3657d2b6
commit
621235bf99
2 changed files with 36 additions and 1 deletions
|
|
@ -42,17 +42,40 @@ describe("ChatPanelShell", () => {
|
|||
await settleShellEffects();
|
||||
});
|
||||
vi.mocked(renderers.renderToolbar).mockClear();
|
||||
vi.mocked(renderers.renderMessages).mockClear();
|
||||
vi.mocked(renderers.renderComposer).mockClear();
|
||||
|
||||
await act(async () => {
|
||||
store.dispatch({ type: "status/set", status: "Working" });
|
||||
await settleShellEffects();
|
||||
});
|
||||
|
||||
expect(renderers.renderToolbar).toHaveBeenCalled();
|
||||
expect(renderers.renderToolbar).toHaveBeenCalledTimes(1);
|
||||
expect(renderers.renderMessages).toHaveBeenCalledTimes(1);
|
||||
expect(renderers.renderComposer).toHaveBeenCalledTimes(1);
|
||||
expect(container.querySelector(".codex-panel__toolbar")?.textContent).toBe("Working");
|
||||
|
||||
unmountChatPanelShell(container);
|
||||
});
|
||||
|
||||
it("stops subscribed slot rendering after unmount", async () => {
|
||||
const store = createChatStateStore();
|
||||
const container = document.createElement("div");
|
||||
document.body.appendChild(container);
|
||||
const renderers = shellRenderers(store);
|
||||
|
||||
await act(async () => {
|
||||
renderChatPanelShell(container, renderers);
|
||||
await settleShellEffects();
|
||||
});
|
||||
vi.mocked(renderers.renderToolbar).mockClear();
|
||||
|
||||
unmountChatPanelShell(container);
|
||||
store.dispatch({ type: "status/set", status: "Closed" });
|
||||
await settleShellEffects();
|
||||
|
||||
expect(renderers.renderToolbar).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
function shellRenderers(store: ReturnType<typeof createChatStateStore>) {
|
||||
|
|
|
|||
|
|
@ -119,6 +119,18 @@ describe("CodexChatView connection lifecycle", () => {
|
|||
);
|
||||
});
|
||||
|
||||
it("renders the React shell on the view content root", async () => {
|
||||
const view = await chatView();
|
||||
|
||||
await view.onOpen();
|
||||
|
||||
const root = view.containerEl.children[1] as HTMLElement;
|
||||
expect(root.classList.contains("codex-panel")).toBe(true);
|
||||
expect(root.querySelector(":scope > .codex-panel__toolbar")).not.toBeNull();
|
||||
expect(root.querySelector(":scope > .codex-panel__body .codex-panel__slot--messages")).not.toBeNull();
|
||||
expect(root.querySelector(":scope > .codex-panel__body .codex-panel__slot--composer")).not.toBeNull();
|
||||
});
|
||||
|
||||
it("ignores stale connection work after the view closes", async () => {
|
||||
let resolveConfig!: (value: unknown) => void;
|
||||
const client = connectedClient({
|
||||
|
|
|
|||
Loading…
Reference in a new issue