import {describe, expect, it} from 'vitest'; import {isRecord, type JsonStorage,readStoredJson, removeStoredJson, writeStoredJson} from './storage'; function createMemoryStorage(): JsonStorage { const values = new Map(); return { getItem(key) { return values.has(key) ? values.get(key)! : null; }, setItem(key, value) { values.set(key, value); }, removeItem(key) { values.delete(key); }, }; } describe('storage helpers', () => { it('reads parsed json values from storage', () => { const storage = createMemoryStorage(); writeStoredJson({ key: 'example', value: {value: 42}, storage, }); const result = readStoredJson({ key: 'example', storage, parse: value => (isRecord(value) && typeof value.value === 'number' ? value.value : null), }); expect(result).toBe(42); }); it('returns null when persisted json cannot be parsed', () => { const storage = createMemoryStorage(); storage.setItem('broken', '{not-valid-json'); const result = readStoredJson({ key: 'broken', storage, parse: () => 'unreachable', }); expect(result).toBeNull(); }); it('removes persisted values', () => { const storage = createMemoryStorage(); writeStoredJson({ key: 'example', value: {value: 'keep'}, storage, }); removeStoredJson('example', storage); expect(storage.getItem('example')).toBeNull(); }); });