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'})); });