Files
ihaleist/tests/offer-audit.test.mjs

26 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {qualifyOfferAudit} from '../server/offer-audit.mjs';
const requirements=['Teslim süresi 30 gün','Numune sunulacak'];
const draft='Teslim süresi 30 gün olarak teklif edilmiştir.';
test('invented evidence and missing rows cannot count as satisfied or receive partial credit',()=>{
const out=qualifyOfferAudit({maddeler:[{gereklilik:requirements[0],durum:'karsilaniyor',kanit:'Ürünler 30 gün içinde teslim edilir.'}]},requirements,draft);
assert.equal(out.uyum_yuzde,0);assert.equal(out.belirsizSayisi,2);
assert.equal(out.maddeler[0].kanit,null);
});
test('reordered model rows match the actual requirement, not their array position',()=>{
const out=qualifyOfferAudit({maddeler:[{gereklilik:requirements[1],durum:'eksik'}, {gereklilik:requirements[0],durum:'karsilaniyor',kanit:'Teslim süresi 30 gün'}]},requirements,draft);
assert.equal(out.maddeler[0].durum,'karsilaniyor');assert.equal(out.maddeler[1].durum,'eksik');
assert.equal(out.uyum_yuzde,50);assert.deepEqual(out.eksikler,[requirements[1]]);
assert.match(out.kapsam,/tüm dokümanın/);
});
test('duplicate and mismatched requirement identities remain unresolved',()=>{
const row={gereklilik:requirements[0],durum:'karsilaniyor',kanit:'Teslim süresi 30 gün'};
const out=qualifyOfferAudit({maddeler:[row,row,{...row,gereklilik:'Değiştirilmiş gereklilik'}]},requirements,draft);
assert.equal(out.uyum_yuzde,0);assert.equal(out.belirsizSayisi,2);
});
test('blank and malformed model payloads fail instead of claiming a completed audit',()=>{
for(const result of [null,{}, {maddeler:[]},{maddeler:'wrong'}]) assert.throws(()=>qualifyOfferAudit(result,requirements,draft),/denetim maddelerini/);
const out=qualifyOfferAudit({maddeler:[null]},requirements,draft);assert.equal(out.belirsizSayisi,2);
});