23 lines
1.5 KiB
JavaScript
23 lines
1.5 KiB
JavaScript
import {test} from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import {auditOfferInParts} from '../server/offer-audit-parts.mjs';
|
||
test('100 requirements and draft evidence beyond 60000 characters survive bounded audit calls',async()=>{
|
||
const requirements=Array.from({length:100},(_,i)=>`${i+1}. gereklilik: `+'laboratuvar şartı '.repeat(8));
|
||
const draft='Giriş metni. '.repeat(5500)+'SON KANIT: Numune sağlanacaktır.';
|
||
let largest=0,seen=new Set();
|
||
const result=await auditOfferInParts(requirements,draft,async(group,part)=>{
|
||
largest=Math.max(largest,group.join('\n').length+part.length);group.forEach(g=>seen.add(g));
|
||
return {maddeler:group.map(g=>({gereklilik:g,durum:part.includes('SON KANIT')?'karsilaniyor':'eksik',kanit:part.includes('SON KANIT')?'SON KANIT: Numune sağlanacaktır.':null}))};
|
||
});
|
||
assert.equal(seen.size,100);assert.equal(result.maddeler.length,100);assert.equal(result.uyum_yuzde,100);
|
||
assert.ok(largest<20000);assert.ok(result.auditReview.draftParts>6);
|
||
});
|
||
test('failed draft parts remain unresolved instead of producing a complete audit',async()=>{
|
||
const result=await auditOfferInParts(['Numune'], 'x'.repeat(11000),async(group,part)=>{
|
||
if(part.length<10000)throw Error('Provider failed');
|
||
return {maddeler:[{gereklilik:'Numune',durum:'eksik'}]};
|
||
});
|
||
assert.equal(result.belirsizSayisi,1);assert.equal(result.auditReview.failedCalls,1);
|
||
await assert.rejects(auditOfferInParts(['Numune'],'Taslak',async()=>{throw Error('offline');}),/hiçbir bölümü/);
|
||
});
|