mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-14 07:24:15 +00:00
74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
import { beforeEach, describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
migrateAppSidebarState,
|
|
useAppSidebarMode,
|
|
} from "./app-sidebar-mode-store";
|
|
import { APP_SIDEBAR_MODE } from "./types";
|
|
|
|
describe("app sidebar mode store", () => {
|
|
beforeEach(() => {
|
|
localStorage.clear();
|
|
useAppSidebarMode.setState({ mode: APP_SIDEBAR_MODE.BROWSE });
|
|
});
|
|
|
|
it("keeps the persisted chat mode while discarding legacy sidebar state", () => {
|
|
// Given
|
|
const legacyState = {
|
|
isOpen: false,
|
|
isHover: true,
|
|
navigationMode: APP_SIDEBAR_MODE.CHAT,
|
|
settings: { disabled: false, isHoverOpen: false },
|
|
};
|
|
|
|
// When
|
|
const migrated = migrateAppSidebarState(legacyState);
|
|
|
|
// Then
|
|
expect(migrated).toEqual({ mode: APP_SIDEBAR_MODE.CHAT });
|
|
expect(migrated).not.toHaveProperty("isOpen");
|
|
expect(migrated).not.toHaveProperty("settings");
|
|
});
|
|
|
|
it("falls back to browse for an invalid persisted mode", () => {
|
|
// Given / When
|
|
const migrated = migrateAppSidebarState({ navigationMode: "invalid" });
|
|
|
|
// Then
|
|
expect(migrated).toEqual({ mode: APP_SIDEBAR_MODE.BROWSE });
|
|
});
|
|
|
|
it("rehydrates the legacy payload under the existing sidebar key", async () => {
|
|
// Given
|
|
localStorage.setItem(
|
|
"sidebar",
|
|
JSON.stringify({
|
|
state: {
|
|
navigationMode: APP_SIDEBAR_MODE.CHAT,
|
|
isOpen: false,
|
|
isHover: true,
|
|
settings: { disabled: true },
|
|
},
|
|
version: 0,
|
|
}),
|
|
);
|
|
|
|
// When
|
|
await useAppSidebarMode.persist.rehydrate();
|
|
|
|
// Then
|
|
expect(useAppSidebarMode.getState().mode).toBe(APP_SIDEBAR_MODE.CHAT);
|
|
expect(useAppSidebarMode.getState()).not.toEqual(
|
|
expect.objectContaining({ isOpen: expect.anything() }),
|
|
);
|
|
});
|
|
|
|
it("updates the current navigation mode", () => {
|
|
// Given / When
|
|
useAppSidebarMode.getState().setMode(APP_SIDEBAR_MODE.CHAT);
|
|
|
|
// Then
|
|
expect(useAppSidebarMode.getState().mode).toBe(APP_SIDEBAR_MODE.CHAT);
|
|
});
|
|
});
|