webtools/site/queued-pastes/prefs.test.mjs
Leon Mika de63c48da2
Some checks failed
/ publish (push) Failing after 1m21s
Added Queued Pastes
2026-09-16 21:52:03 +10:00

36 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 },
);
});