// @vitest-environment happy-dom
import React, { act } from "react";
import { createRoot } from "react-dom/client";
import { afterEach, describe, expect, it } from "vitest";
import { installReactActEnvironment } from "../../hooks/domSelectionTestHarness";
import { useCompositionStack } from "./useCompositionStack";
installReactActEnvironment();
describe("useCompositionStack — project scoping", () => {
afterEach(() => {
document.body.innerHTML = "";
});
for (const activeCompositionPath of [null, "index.html"] as const) {
it(`rebuilds the master preview URL on a project switch with ${String(activeCompositionPath)}`, async () => {
const host = document.createElement("div");
document.body.append(host);
const root = createRoot(host);
let previewUrl = "";
function Harness(props: { projectId: string; activeCompositionPath: string | null }) {
previewUrl = useCompositionStack(props).compositionStack[0]?.previewUrl ?? "";
return null;
}
await act(async () => {
root.render(
,
);
});
expect(previewUrl).toBe("/api/projects/project-a/preview");
await act(async () => {
root.render(
,
);
});
expect(previewUrl).toBe("/api/projects/project-b/preview");
act(() => root.unmount());
});
}
});