26 lines
1.8 KiB
JavaScript
26 lines
1.8 KiB
JavaScript
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);
|
||
});
|