import { test } from 'node:test'; import assert from 'node:assert/strict'; import { serializePrefs, parsePrefs } from './prefs.mjs'; test('serializePrefs writes dashed keys with boolean values', () => { assert.equal( serializePrefs({ newLines: true, advanceFocus: false }), '{"new-lines":true,"advance-focus":false}', ); }); test('parsePrefs reads dashed keys into camelCase', () => { assert.deepEqual( parsePrefs('{"new-lines":true,"advance-focus":false}'), { newLines: true, advanceFocus: false }, ); }); test('parsePrefs returns defaults for invalid JSON', () => { assert.deepEqual(parsePrefs('not json'), { newLines: false, advanceFocus: false }); }); test('parsePrefs returns defaults for null (missing localStorage entry)', () => { assert.deepEqual(parsePrefs(null), { newLines: false, advanceFocus: false }); }); test('parsePrefs defaults missing keys to false', () => { assert.deepEqual(parsePrefs('{"new-lines":true}'), { newLines: true, advanceFocus: false }); }); test('parsePrefs defaults non-boolean values to false', () => { assert.deepEqual( parsePrefs('{"new-lines":"yes","advance-focus":1}'), { newLines: false, advanceFocus: false }, ); });