import { describe, it, expect, vi, beforeEach } from 'vitest'; import { requestPersistence } from './persist'; // Tests for navigator.storage.persist() — must surface granted=false // respectfully without spamming the user (CORE-05 + RESEARCH Pitfall 2: // iOS Safari often returns false). Each test stubs `navigator` globally // to one of the four scenarios. describe('requestPersistence (CORE-05)', () => { beforeEach(() => vi.unstubAllGlobals()); it('returns granted=true when navigator.storage.persist resolves true', async () => { vi.stubGlobal('navigator', { storage: { persist: async () => true } }); expect(await requestPersistence()).toEqual({ granted: true, apiAvailable: true, }); }); it('returns granted=false when navigator.storage.persist resolves false', async () => { vi.stubGlobal('navigator', { storage: { persist: async () => false } }); expect(await requestPersistence()).toEqual({ granted: false, apiAvailable: true, }); }); it('returns granted=false when persist throws', async () => { vi.stubGlobal('navigator', { storage: { persist: async () => { throw new Error('boom'); }, }, }); expect(await requestPersistence()).toEqual({ granted: false, apiAvailable: true, }); }); it('returns apiAvailable=false when navigator.storage is missing', async () => { vi.stubGlobal('navigator', {}); expect(await requestPersistence()).toEqual({ granted: false, apiAvailable: false, }); }); });