Files
prowler/ui/store/__tests__/onboarding-checkpoint.test.ts
2026-06-15 13:53:48 +02:00

86 lines
2.7 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import {
CHECKPOINT_MARKER,
useOnboardingCheckpointStore,
} from "../onboarding-checkpoint";
describe("useOnboardingCheckpointStore", () => {
beforeEach(() => {
window.localStorage.clear();
useOnboardingCheckpointStore.setState({ armed: false, open: false });
});
afterEach(() => {
window.localStorage.clear();
});
it("starts disarmed and closed", () => {
const state = useOnboardingCheckpointStore.getState();
expect(state.armed).toBe(false);
expect(state.open).toBe(false);
});
it("arm() sets armed without opening", () => {
useOnboardingCheckpointStore.getState().arm();
const state = useOnboardingCheckpointStore.getState();
expect(state.armed).toBe(true);
expect(state.open).toBe(false);
});
it("requestOpenOnWizardClose opens only when armed, a provider connected, and not handled", () => {
useOnboardingCheckpointStore.getState().arm();
useOnboardingCheckpointStore
.getState()
.requestOpenOnWizardClose({ providerConnected: true });
expect(useOnboardingCheckpointStore.getState().open).toBe(true);
});
it("does NOT open when not armed even if a provider connected", () => {
// Covers established users who skipped onboarding but later add a provider.
useOnboardingCheckpointStore
.getState()
.requestOpenOnWizardClose({ providerConnected: true });
expect(useOnboardingCheckpointStore.getState().open).toBe(false);
});
it("does NOT open when armed but no provider connected (wizard closed empty)", () => {
useOnboardingCheckpointStore.getState().arm();
useOnboardingCheckpointStore
.getState()
.requestOpenOnWizardClose({ providerConnected: false });
expect(useOnboardingCheckpointStore.getState().open).toBe(false);
});
it("does NOT open when the checkpoint was already handled in this browser", () => {
window.localStorage.setItem(CHECKPOINT_MARKER, "true");
useOnboardingCheckpointStore.getState().arm();
useOnboardingCheckpointStore
.getState()
.requestOpenOnWizardClose({ providerConnected: true });
expect(useOnboardingCheckpointStore.getState().open).toBe(false);
});
it("close() resets open and disarms", () => {
useOnboardingCheckpointStore.getState().arm();
useOnboardingCheckpointStore
.getState()
.requestOpenOnWizardClose({ providerConnected: true });
expect(useOnboardingCheckpointStore.getState().open).toBe(true);
useOnboardingCheckpointStore.getState().close();
const state = useOnboardingCheckpointStore.getState();
expect(state.open).toBe(false);
expect(state.armed).toBe(false);
});
});