Hold stale tender notification retries for review

This commit is contained in:
2026-09-06 13:19:55 +03:00
parent 02625906f2
commit 1fbf77c0ac
6 changed files with 73 additions and 4 deletions
+16
View File
@@ -55,3 +55,19 @@ test('subscription criteria remain plain text in outgoing digest HTML',async()=>
assert.ok(!message.html.includes(criteria));
assert.ok(message.subject.includes(criteria),'the non-HTML subject retains the literal criterion');
});
test('pending digest is held before provider replay when its deadline or eligibility changed',async()=>{
const pinned={...future};
for(const current of [[],[{...future,durum:'İptal'}],[{...future,tarih:'01.09.2026'}],
[{...future,saat:''}],[{...future,tarih:'11.09.2026'}]]) {
let held=0;
const delivery={id:'pending',lease:'test',tenderIds:[future.id],payload:{digest:[pinned],html:'original'}};
const deps={now,configured:()=>true,telegramReady:()=>false,
readSubscriptions:()=>[{id:1,email:'qa',initialized:true,deliveryPending:true}],reserve:()=>delivery,
hold:(job,reason)=>{assert.equal(job,delivery);assert.match(reason,/incelemesi/);held++;},
accepted:()=>assert.fail('must not mark as delivered'),deliverEmail:()=>assert.fail('must not replay stale email')};
const result=await bildirimleriIsle(async()=>({tenders:current}),{},deps);
assert.equal(held,1);assert.equal(result.hata,1);assert.equal(result.gonderilen,0);
assert.equal(delivery.payload.html,'original');
}
});