ituoke/frontend/tests/prefs.test.mjs

22 lines
889 B
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { loadPrefs, savePrefs } from '../src/lib/prefs.ts'
test('screen-off preference migrates old settings and survives unrelated updates', () => {
const storage = new Map([['ituoke.prefs.v1', JSON.stringify({ connectHost: 'phone:1234' })]])
globalThis.localStorage = {
getItem: key => storage.get(key) ?? null,
setItem: (key, value) => storage.set(key, value),
}
assert.equal(loadPrefs().screenOff, false)
savePrefs({ screenOff: true })
savePrefs({ theme: 'dark' })
assert.equal(loadPrefs().screenOff, true)
assert.equal(loadPrefs().connectHost, 'phone:1234')
savePrefs({ screenOff: false })
assert.equal(loadPrefs().screenOff, false)
storage.set('ituoke.prefs.v1', JSON.stringify({ screenOff: 'true' }))
assert.equal(loadPrefs().screenOff, false)
delete globalThis.localStorage
})