test(web): add workspace-profiles tests
This commit is contained in:
parent
693811ccb2
commit
ba65d0b4e8
@ -213,6 +213,16 @@ describe("workspace profiles", () => {
|
|||||||
);
|
);
|
||||||
expect(getEffectiveProfile()).toBe("trimme");
|
expect(getEffectiveProfile()).toBe("trimme");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses persisted profile in non-test runtime", async () => {
|
||||||
|
process.env.NODE_ENV = "production";
|
||||||
|
process.env.VITEST = "false";
|
||||||
|
const { getEffectiveProfile, mockReadFile } = await importWorkspace();
|
||||||
|
mockReadFile.mockReturnValue(
|
||||||
|
JSON.stringify({ activeProfile: "personal" }) as never,
|
||||||
|
);
|
||||||
|
expect(getEffectiveProfile()).toBe("personal");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// ─── setUIActiveProfile ──────────────────────────────────────────
|
// ─── setUIActiveProfile ──────────────────────────────────────────
|
||||||
@ -474,6 +484,16 @@ describe("workspace profiles", () => {
|
|||||||
});
|
});
|
||||||
expect(resolveWebChatDir()).toBe(join("/custom/state", "web-chat"));
|
expect(resolveWebChatDir()).toBe(join("/custom/state", "web-chat"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses default web-chat dir in non-test runtime when no profile is set", async () => {
|
||||||
|
process.env.NODE_ENV = "production";
|
||||||
|
process.env.VITEST = "false";
|
||||||
|
const { resolveWebChatDir, mockReadFile } = await importWorkspace();
|
||||||
|
mockReadFile.mockImplementation(() => {
|
||||||
|
throw new Error("ENOENT");
|
||||||
|
});
|
||||||
|
expect(resolveWebChatDir()).toBe(join(DEFAULT_STATE_DIR, "web-chat"));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// ─── resolveWorkspaceRoot (profile-aware) ─────────────────────────
|
// ─── resolveWorkspaceRoot (profile-aware) ─────────────────────────
|
||||||
@ -570,6 +590,21 @@ describe("workspace profiles", () => {
|
|||||||
expect(resolveWorkspaceRoot()).toBe(targetDir);
|
expect(resolveWorkspaceRoot()).toBe(targetDir);
|
||||||
expect(mockRename).toHaveBeenCalledWith(legacyDir, targetDir);
|
expect(mockRename).toHaveBeenCalledWith(legacyDir, targetDir);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses legacy workspace fallback when profile workspace is missing", async () => {
|
||||||
|
const { resolveWorkspaceRoot, setUIActiveProfile, mockExists, mockReadFile, mockRename } =
|
||||||
|
await importWorkspace();
|
||||||
|
const legacyDir = join(DEFAULT_STATE_DIR, "workspace-ironclaw");
|
||||||
|
mockReadFile.mockReturnValue(JSON.stringify({}) as never);
|
||||||
|
setUIActiveProfile("ironclaw");
|
||||||
|
mockRename.mockImplementation(() => {
|
||||||
|
throw new Error("EPERM");
|
||||||
|
});
|
||||||
|
mockExists.mockImplementation((p) => String(p) === legacyDir);
|
||||||
|
|
||||||
|
expect(resolveWorkspaceRoot()).toBe(legacyDir);
|
||||||
|
expect(mockRename).toHaveBeenCalled();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// ─── registerWorkspacePath / getRegisteredWorkspacePath ────────────
|
// ─── registerWorkspacePath / getRegisteredWorkspacePath ────────────
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user