Files
ihaleist/tests/reminder-preferences.test.mjs

20 lines
1.1 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {validateReminderPreferences,quietNow} from '../src/services/reminderPreferences.js';
const prefs={pushEnabled:true,quietEnabled:true,quietStart:'22:00',quietEnd:'08:00'};
const at=(h,m)=>({getHours:()=>h,getMinutes:()=>m});
test('quiet hours handle midnight and boundaries in the device local clock',()=>{
assert.equal(quietNow(prefs,at(22,0)),true);assert.equal(quietNow(prefs,at(7,59)),true);
assert.equal(quietNow(prefs,at(8,0)),false);assert.equal(quietNow(prefs,at(21,59)),false);
assert.equal(quietNow({...prefs,quietStart:'08:00',quietEnd:'12:00'},at(10,0)),true);
assert.equal(quietNow({...prefs,quietStart:'08:00'},at(8,0)),false);
assert.equal(quietNow({...prefs,quietEnabled:false},at(23,0)),false);
});
test('invalid quiet preferences are rejected and cannot silently enable notifications',()=>{
for(const quietStart of ['', '24:00','08:60',null]){
assert.throws(()=>validateReminderPreferences({...prefs,quietStart}));
assert.equal(quietNow({...prefs,quietStart},at(12,0)),true);
}
assert.throws(()=>validateReminderPreferences({...prefs,pushEnabled:'true'}));
});