import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { getPrefs } from '../prefs'; import { useGameStore } from '../store'; describe('game store nav and prefs', () => { beforeEach(() => { const store: Record = {}; vi.stubGlobal('localStorage', { getItem(key: string) { return store[key] ?? null; }, setItem(key: string, value: string) { store[key] = value; }, }); useGameStore.setState({ activePanel: 'play', selectedStoryNodeId: null, prefs: getPrefs(), }); }); afterEach(() => { vi.unstubAllGlobals(); }); it('has default activePanel and selectedStoryNodeId', () => { const state = useGameStore.getState(); expect(state.activePanel).toBe('play'); expect(state.selectedStoryNodeId).toBeNull(); }); it('updates activePanel via setActivePanel', () => { const state = useGameStore.getState(); state.setActivePanel('story'); expect(useGameStore.getState().activePanel).toBe('story'); }); it('updates selectedStoryNodeId via setSelectedStoryNodeId', () => { const state = useGameStore.getState(); state.setSelectedStoryNodeId('node-1'); expect(useGameStore.getState().selectedStoryNodeId).toBe('node-1'); }); it('toggles collapsed action groups in prefs', () => { const state = useGameStore.getState(); expect(state.prefs.collapsedActionGroups['skills:gather']).toBeUndefined(); state.toggleActionGroupCollapsed('skills:gather'); expect(useGameStore.getState().prefs.collapsedActionGroups['skills:gather']).toBe(true); useGameStore.getState().toggleActionGroupCollapsed('skills:gather'); expect(useGameStore.getState().prefs.collapsedActionGroups['skills:gather']).toBe(false); }); });