feat(state): nav panel store and expanded prefs
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { useGameStore } from '../store';
|
||||
|
||||
describe('game store nav and prefs', () => {
|
||||
beforeEach(() => {
|
||||
const store: Record<string, string> = {};
|
||||
vi.stubGlobal('localStorage', {
|
||||
getItem(key: string) {
|
||||
return store[key] ?? null;
|
||||
},
|
||||
setItem(key: string, value: string) {
|
||||
store[key] = value;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
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');
|
||||
|
||||
// Reset back
|
||||
useGameStore.getState().setActivePanel('play');
|
||||
});
|
||||
|
||||
it('updates selectedStoryNodeId via setSelectedStoryNodeId', () => {
|
||||
const state = useGameStore.getState();
|
||||
state.setSelectedStoryNodeId('node-1');
|
||||
expect(useGameStore.getState().selectedStoryNodeId).toBe('node-1');
|
||||
|
||||
state.setSelectedStoryNodeId(null);
|
||||
expect(useGameStore.getState().selectedStoryNodeId).toBeNull();
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user