import { beforeEach, describe, expect, mock, test } from 'bun:test'; const storage = new Map(); let storageSetCount = 0; const safeStorage = { getItem: (key: string) => storage.get(key) ?? null, setItem: (key: string, value: string) => { storageSetCount += 1; storage.set(key, value); }, removeItem: (key: string) => { storage.delete(key); }, clear: () => { storage.clear(); }, key: (index: number) => Array.from(storage.keys())[index] ?? null, get length() { return storage.size; }, } as Storage; mock.module('./utils/safeStorage', () => ({ getDeferredSafeStorage: () => safeStorage, getSafeStorage: () => safeStorage, })); mock.module('@/lib/desktop', () => ({ isVSCodeRuntime: () => false, })); mock.module('@/lib/runtime-fetch', () => ({ runtimeFetch: mock(async () => new Response('{}', { headers: { 'Content-Type': 'application/json' } })), })); const { useSessionFoldersStore } = await import('./useSessionFoldersStore'); const waitForPersist = () => new Promise((resolve) => setTimeout(resolve, 350)); describe('useSessionFoldersStore folder assignments', () => { beforeEach(() => { storage.clear(); storageSetCount = 0; useSessionFoldersStore.setState({ foldersMap: {}, collapsedFolderIds: new Set(), }); }); test('repeated addSessionToFolder to the same folder preserves foldersMap reference', async () => { const store = useSessionFoldersStore.getState(); const folder = store.createFolder('/workspace/project', 'Work'); store.addSessionToFolder('/workspace/project', folder.id, 'ses_1'); await waitForPersist(); storageSetCount = 0; const before = useSessionFoldersStore.getState().foldersMap; useSessionFoldersStore.getState().addSessionToFolder('/workspace/project', folder.id, 'ses_1'); await waitForPersist(); expect(useSessionFoldersStore.getState().foldersMap).toBe(before); expect(storageSetCount).toBe(0); }); test('repeated addSessionsToFolder to the same folder preserves foldersMap reference', async () => { const store = useSessionFoldersStore.getState(); const folder = store.createFolder('/workspace/project', 'Batch'); store.addSessionsToFolder('/workspace/project', folder.id, ['ses_1', 'ses_2']); await waitForPersist(); storageSetCount = 0; const before = useSessionFoldersStore.getState().foldersMap; useSessionFoldersStore.getState().addSessionsToFolder('/workspace/project', folder.id, ['ses_1', 'ses_2']); await waitForPersist(); expect(useSessionFoldersStore.getState().foldersMap).toBe(before); expect(storageSetCount).toBe(0); }); });