35 lines
2.0 KiB
JavaScript
35 lines
2.0 KiB
JavaScript
import test from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import {qualifyAnalysis} from '../server/analysis-quality.mjs';
|
||
test('malformed nested model fields cannot reach preparation screens',()=>{
|
||
for(const result of [
|
||
{itemsAndSpecs:[null]}, {itemsAndSpecs:[{name:{text:'Kit'}}]},
|
||
{itemsAndSpecs:[{name:'Kit',quantity:'2 adet',keySpecs:'steril'}]},
|
||
{documentChecklist:[{document:'ÜTS',mandatory:'false'}]},
|
||
{criticalRequirements:[{text:'Numune'}]}, {deadlines:'120 gün'},
|
||
{roadmap:[{action:'Hazırla',step:'bir'}]},
|
||
{bidAnalysis:{recommendedBid:'1000'}}, {bidAnalysis:{winProbability:101}},
|
||
{citations:[null]}, {summary:{text:'Analiz'}}
|
||
]) assert.throws(()=>qualifyAnalysis(result), /biçim/);
|
||
});
|
||
test('missing item quantity or document obligation keeps analysis partial',()=>{
|
||
const out=qualifyAnalysis({itemsAndSpecs:[{name:'Kit'}],documentChecklist:[{document:'ÜTS'}]});
|
||
assert.equal(out.sourceReview.status,'partial');
|
||
assert.ok(out.sourceReview.issues.some(v=>v.includes('miktar/birim')));
|
||
assert.ok(out.sourceReview.issues.some(v=>v.includes('zorunluluk')));
|
||
});
|
||
test('truncated input and repaired output are partial, never complete analysis',()=>{
|
||
const r=qualifyAnalysis({itemsAndSpecs:[{name:'Kit',quantity:'2 adet'}]},{text:'a'.repeat(100),limit:50,expectedItems:100,repaired:true});
|
||
assert.equal(r.sourceReview.status,'partial');assert.equal(r.sourceReview.issues.length,3);
|
||
assert.equal(r.sourceReview.analyzedCharacters,50);
|
||
assert.equal(r.sourceReview.sections.documentChecklist,'not_extracted');
|
||
});
|
||
test('source versions change with content and empty sections do not claim absence',()=>{
|
||
const a=qualifyAnalysis({documentChecklist:[]},{text:'kaynak A'});
|
||
const b=qualifyAnalysis({documentChecklist:[]},{text:'kaynak B'});
|
||
assert.notEqual(a.documentVersion,b.documentVersion);
|
||
assert.equal(a.sourceReview.status,'review_required');
|
||
assert.equal(a.sourceReview.sections.documentChecklist,'not_extracted');
|
||
assert.throws(()=>qualifyAnalysis({itemsAndSpecs:'kalem yok'}));
|
||
});
|