/** * 15-persistence: localStorage 持久化 */ import { describe, it, expect, beforeEach } from 'vitest' import { store } from '../../src/composables/useStore' describe('15-persistence — localStorage 持久化', () => { beforeEach(() => { localStorage.clear() }) it('get 带 fallback 返回默认值', () => { const val = store.get('nonexistent', { hello: 'world' }) expect(val).toEqual({ hello: 'world' }) }) it('set 后 get 返回正确值', () => { store.set('test-key', { a: 1, b: [2, 3] }) const val = store.get('test-key', null) expect(val).toEqual({ a: 1, b: [2, 3] }) }) it('remove 后 get 返回 fallback', () => { store.set('test-key', 'value') store.remove('test-key') const val = store.get('test-key', 'fallback') expect(val).toBe('fallback') }) it('clearAll 清除所有带前缀的键', () => { store.set('key1', 'a') store.set('key2', 'b') localStorage.setItem('other-key', 'keep-me') store.clearAll() expect(store.get('key1', null)).toBeNull() expect(store.get('key2', null)).toBeNull() expect(localStorage.getItem('other-key')).toBe('keep-me') }) it('损坏数据回退默认值', () => { localStorage.setItem(store.PREFIX + 'bad', '{invalid json') const val = store.get('bad', { ok: true }) expect(val).toEqual({ ok: true }) }) })