37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
|
|
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 },
|
||
|
|
);
|
||
|
|
});
|