Files
ihaleist/tests/tender-source-changes.test.mjs
T

21 lines
1.5 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {applyTenderStates,tenderSnapshot,tenderSourceChanges} 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'};
const current={...original,id:'new-source-id',tarih:'12.09.2026',saat:'11:00',durum:'İptal',documentVersion:'v2'};
const data={takipte:true,notes:[{text:'Firma notu'}],bidDraft:{pricesBySource:{kit:'100'}}};
const result=applyTenderStates([current],{'2026/1':{snapshot:tenderSnapshot(original),data}})[0];
assert.equal(result.id,'new-source-id');assert.equal(result.durum,'İptal');
assert.deepEqual(result.notes,data.notes);assert.deepEqual(result.bidDraft,data.bidDraft);
assert.deepEqual(result.sourceChanges.map(x=>x.field),['tarih','saat','durum','documentVersion']);
assert.notEqual(bidSourceSnapshot(original),bidSourceSnapshot({...original,durum:'İptal'}));
});
test('unknown legacy fields do not invent a change and a new saved baseline clears comparisons',()=>{
assert.deepEqual(tenderSourceChanges({tarih:''},{tarih:'12.09.2026',durum:'Açık'}),[]);
const current={ikn:'2026/2',tarih:'12.09.2026',saat:'11:00',durum:'Açık'};
const result=applyTenderStates([current],{'2026/2':{snapshot:tenderSnapshot(current),data:{takipte:true}}});
assert.deepEqual(result[0].sourceChanges,[]);
});