webtools/site/queued-pastes/prefs.test.mjs

37 lines
1.2 KiB
JavaScript
Raw Normal View History

2026-09-16 21:52:03 +10:00
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 },
);
});