import { render, screen } from "@testing-library/react";
import { beforeEach, describe, expect, it } from "vitest";
import { ShellHostProvider, useShellHostContext } from "../ShellHostContext";
import { __resetShellHostContextForTests } from "../../shell-host";
function Probe() {
const value = useShellHostContext();
return
{JSON.stringify(value)};
}
describe("ShellHostContext", () => {
beforeEach(() => {
__resetShellHostContextForTests();
window.history.replaceState({}, "", "/");
delete (window as Window & Record).__FUSION_SHELL_HOST_CONTEXT__;
});
it("provides browser defaults", () => {
render(
,
);
const value = JSON.parse(screen.getByTestId("host").textContent ?? "{}");
expect(value.kind).toBe("browser");
expect(value.isNativeShell).toBe(false);
});
it("provides normalized shell fields", () => {
(window as Window & Record).__FUSION_SHELL_HOST_CONTEXT__ = {
kind: "desktop-shell",
mode: "remote",
connectionId: "conn-2",
serverUrl: "https://remote.example.com",
canOpenConnectionManager: true,
};
render(
,
);
const value = JSON.parse(screen.getByTestId("host").textContent ?? "{}");
expect(value.isNativeShell).toBe(true);
expect(value.kind).toBe("desktop-shell");
expect(value.mode).toBe("remote");
expect(value.connectionId).toBe("conn-2");
expect(value.serverUrl).toBe("https://remote.example.com");
expect(value.canOpenConnectionManager).toBe(true);
});
});