fix: resolve current bid source by IKN and track output header changes

This commit is contained in:
2026-09-06 14:59:23 +03:00
parent 528933aa1b
commit ff1a4bca70
5 changed files with 40 additions and 2 deletions
+21 -1
View File
@@ -1,6 +1,6 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {applyTenderStates,tenderSnapshot,tenderSourceChanges} from '../src/services/tenderState.js';
import {applyTenderStates,tenderSnapshot,tenderSourceChanges,resolveCurrentTender} from '../src/services/tenderState.js';
import {bidSourceSnapshot} from '../src/services/bidSource.js';
test('fresh deadline and cancellation changes remain visible without overwriting saved work',()=>{
const original={id:'old-id',ikn:'2026/1',tarih:'10.09.2026',saat:'10:00',durum:'Açık',documentVersion:'v1'};
@@ -30,3 +30,23 @@ test('winner publication changes the reviewed bid source without destroying save
assert.equal(restored.kazananFirma,'QA Kazanan');
assert.equal(bidSourceSnapshot(original),bidSourceSnapshot({...original,kazananFirma:''}));
});
test('preparation resolves rotating source ids by IKN without merging a different procurement',()=>{
const selected={id:'old-response',ikn:'2026/42',baslik:'Eski başlık',bidDraft:{pricesBySource:{kit:'10'}}};
const updated={id:'new-response',ikn:'2026/42',baslik:'Güncel başlık',kazananFirma:'QA Kazanan'};
const result=resolveCurrentTender(selected,[{id:'old-response',ikn:'2026/99',baslik:'Başka ihale'},updated]);
assert.equal(result.id,'new-response');assert.equal(result.kazananFirma,'QA Kazanan');
assert.equal(result.baslik,'Güncel başlık');assert.deepEqual(result.bidDraft,selected.bidDraft);
assert.deepEqual(resolveCurrentTender(selected,[{id:'old-response',ikn:'2026/99'}]),selected);
assert.deepEqual(resolveCurrentTender(selected,[]),selected);
assert.equal(resolveCurrentTender({id:'local-id'},[{id:'local-id',ikn:'2026/42'}]).ikn,'2026/42');
});
test('output header changes invalidate source review, while rotating response ids do not',()=>{
const tender={id:'response-1',ikn:'2026/42',baslik:'Laboratuvar alımı',kurum:'QA Hastane',tarih:'10.09.2026',saat:'10:00'};
const original=bidSourceSnapshot(tender);
for(const patch of [{baslik:'Düzeltilmiş alım'},{kurum:'Düzeltilmiş idare'},{ihaleTarihi:'11.09.2026'}])
assert.notEqual(bidSourceSnapshot({...tender,...patch}),original);
assert.equal(bidSourceSnapshot({...tender,id:'response-2'}),original);
});