import { describe, it, expect, beforeEach, vi } from 'vitest' import { settings } from '../../../src/lib/stores/settings.svelte.js' import { saveSetting, getSetting } from '../../../src/lib/storage/db.js' beforeEach(() => { // Reset settings to defaults settings.autoLockMinutes = 5 settings.lockOnTabSwitch = true }) describe('SettingsStore', () => { describe('default values', () => { it('should have default autoLockMinutes of 5', () => { expect(settings.autoLockMinutes).toBe(5) }) it('should have default lockOnTabSwitch of true', () => { expect(settings.lockOnTabSwitch).toBe(true) }) }) describe('load()', () => { it('should load persisted settings from IndexedDB', async () => { await saveSetting('autoLockMinutes', 10) await saveSetting('lockOnTabSwitch', false) await settings.load() expect(settings.autoLockMinutes).toBe(10) expect(settings.lockOnTabSwitch).toBe(false) }) it('should fall back to defaults for missing keys', async () => { // Remove any previously saved settings await saveSetting('autoLockMinutes', undefined) await saveSetting('lockOnTabSwitch', undefined) await settings.load() expect(settings.autoLockMinutes).toBe(5) expect(settings.lockOnTabSwitch).toBe(true) }) it('should fall back to defaults for partially missing keys', async () => { await saveSetting('autoLockMinutes', 15) await saveSetting('lockOnTabSwitch', undefined) await settings.load() expect(settings.autoLockMinutes).toBe(15) expect(settings.lockOnTabSwitch).toBe(true) // default }) it('should handle string values from IndexedDB', async () => { await saveSetting('autoLockMinutes', '10') await saveSetting('lockOnTabSwitch', 'true') await settings.load() expect(settings.autoLockMinutes).toBe(10) // coerced to number expect(settings.lockOnTabSwitch).toBe(true) // coerced to boolean }) }) describe('save()', () => { it('should persist settings to IndexedDB', async () => { settings.autoLockMinutes = 15 settings.lockOnTabSwitch = false await settings.save() // Verify by loading back const loadedMinutes = await getSetting('autoLockMinutes') const loadedTabSwitch = await getSetting('lockOnTabSwitch') expect(loadedMinutes).toBe(15) expect(loadedTabSwitch).toBe(false) }) it('should persist different values', async () => { settings.autoLockMinutes = 30 settings.lockOnTabSwitch = true await settings.save() const loadedMinutes = await getSetting('autoLockMinutes') const loadedTabSwitch = await getSetting('lockOnTabSwitch') expect(loadedMinutes).toBe(30) expect(loadedTabSwitch).toBe(true) }) }) })