20 lines
1.1 KiB
JavaScript
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'}));
|
|
});
|