fix: persist notification preferences and clarify delivery controls
This commit is contained in:
@@ -249,3 +249,10 @@ test('competitor watchlist keeps the saved roster when a stale or invalid write
|
||||
assert.deepEqual((await request('/api/me/data')).data.veri[anahtar],[item]);
|
||||
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:[],revision:first.data.revision})).status,200);
|
||||
});
|
||||
test('notification preferences reject stale writes and malformed quiet times',async()=>{
|
||||
const anahtar='reminder',deger={pushEnabled:true,quietEnabled:true,quietStart:'22:00',quietEnd:'08:00'};
|
||||
const first=await request('/api/me/data','PUT',{anahtar,deger,revision:null});assert.equal(first.status,200);
|
||||
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:{...deger,quietStart:'25:00'},revision:first.data.revision})).status,400);
|
||||
assert.equal((await request('/api/me/data','PUT',{anahtar,deger:{...deger,pushEnabled:false},revision:null})).status,409);
|
||||
assert.deepEqual((await request('/api/me/data')).data.veri.reminder,deger);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
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'}));
|
||||
});
|
||||
Reference in New Issue
Block a user