Files
claw3d/tests/unit/onboardingState.test.ts
Luke The Dev c9789c2148 Add office agent management wizard (#56)
* 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>
2026-03-23 18:04:37 -05:00

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();
});
});