c9789c2148
* Add agents * Agent * Added agents management * Polish agent wizard and release blockers. Finalize the office agent management flow by aligning the gateway fallback behavior, cleaning up UI semantics, and updating tests so the branch is ready to ship. Made-with: Cursor --------- Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com> Co-authored-by: iamlukethedev <lucas.guilherme@smartwayslfl.com>
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import { afterEach, describe, expect, it } from "vitest";
|
|
import { act, renderHook } from "@testing-library/react";
|
|
import { useOnboardingState } from "@/features/onboarding/useOnboardingState";
|
|
|
|
describe("useOnboardingState", () => {
|
|
afterEach(() => {
|
|
// Clean up localStorage between tests
|
|
try {
|
|
window.localStorage.removeItem("claw3d:onboarding:completed");
|
|
} catch {
|
|
// noop
|
|
}
|
|
});
|
|
|
|
it("shows onboarding by default when localStorage is empty", () => {
|
|
const { result } = renderHook(() => useOnboardingState());
|
|
expect(result.current.showOnboarding).toBe(true);
|
|
});
|
|
|
|
it("hides onboarding after completeOnboarding is called", () => {
|
|
const { result } = renderHook(() => useOnboardingState());
|
|
expect(result.current.showOnboarding).toBe(true);
|
|
|
|
act(() => {
|
|
result.current.completeOnboarding();
|
|
});
|
|
|
|
expect(result.current.showOnboarding).toBe(false);
|
|
});
|
|
|
|
it("persists completion to localStorage", () => {
|
|
const { result } = renderHook(() => useOnboardingState());
|
|
|
|
act(() => {
|
|
result.current.completeOnboarding();
|
|
});
|
|
|
|
expect(window.localStorage.getItem("claw3d:onboarding:completed")).toBe(
|
|
"true",
|
|
);
|
|
});
|
|
|
|
it("reads completion state from localStorage on mount", () => {
|
|
window.localStorage.setItem("claw3d:onboarding:completed", "true");
|
|
const { result } = renderHook(() => useOnboardingState());
|
|
expect(result.current.showOnboarding).toBe(false);
|
|
});
|
|
|
|
it("resets onboarding when resetOnboarding is called", () => {
|
|
const { result } = renderHook(() => useOnboardingState());
|
|
|
|
act(() => {
|
|
result.current.completeOnboarding();
|
|
});
|
|
expect(result.current.showOnboarding).toBe(false);
|
|
|
|
act(() => {
|
|
result.current.resetOnboarding();
|
|
});
|
|
expect(result.current.showOnboarding).toBe(true);
|
|
expect(window.localStorage.getItem("claw3d:onboarding:completed")).toBeNull();
|
|
});
|
|
});
|