feat: version tender calendar events

This commit is contained in:
2026-09-06 16:21:04 +03:00
parent fc4825e2f8
commit 835e66405a
3 changed files with 18 additions and 3 deletions
+8 -1
View File
@@ -55,11 +55,18 @@ test('deadline ICS is a transparent instant, preserves UID across date changes a
assert.match(changed,/DTSTART:20260912T113000Z/);
assert.doesNotMatch(changed,/DTEND:|DURATION:/);
assert.match(changed,/TRANSP:TRANSPARENT/);
assert.match(changed.replace(/\r\n /g,''),/otomatik güncellenmez/);
assert.match(changed.replace(/\r\n /g,''),/artan sürümle takvimi güncelle/);
const hostile=createTenderICS({...t,baslik:'A\rEND:VEVENT\rBEGIN:VEVENT\nB'});
assert.equal(hostile.split('\r\n').filter(line=>line==='BEGIN:VEVENT').length,1);
assert.equal(hostile.split('\r\n').filter(line=>line==='END:VEVENT').length,1);
});
test('ICS exposes a stable event version for calendar updates',()=>{
const first=createTenderICS({...t,documentVersion:3},new Date('2026-09-01T00:00:00Z'));
const changed=createTenderICS({...t,tarih:'12.09.2026',saat:'14:30',documentVersion:4},new Date('2026-09-02T00:00:00Z'));
assert.match(first,/SEQUENCE:3/); assert.match(changed,/SEQUENCE:4/);
assert.equal(first.match(/UID:[^\r\n]+/)[0],changed.match(/UID:[^\r\n]+/)[0]);
assert.match(changed,/art%C4%B1?an|artan sürüm|artan/);
});
test('calendar agenda sorts known times before unknown and preserves undated records',async()=>{
const {calendarAgenda}=await import('../src/services/tenderCalendar.js');