25 lines
1.6 KiB
JavaScript
25 lines
1.6 KiB
JavaScript
import {test} from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {ihaleMetni,teklifDenetle,teklifTaslak} from '../server/ai-teklif.mjs';
|
|
test('an explicitly supplied short source is used intact instead of another tender announcement',async()=>{
|
|
const supplied='Geçerlilik 120 gündür. Numune istenir.';
|
|
const result=await ihaleMetni('2026/123',supplied,'Geçerlilik 60 gündür. '.repeat(20));
|
|
assert.deepEqual(result,{text:supplied,kaynak:'yüklenen'});
|
|
});
|
|
test('explicit empty or invalid sources fail without falling back to a different document',async()=>{
|
|
for(const text of ['', ' ', null, {}, 123]) {
|
|
await assert.rejects(ihaleMetni('2026/123',text,'Başka ilan '.repeat(30)),/kaynak metni boş veya geçersiz/);
|
|
}
|
|
});
|
|
test('audit and draft generation do not swallow explicit source validation errors',async()=>{
|
|
await assert.rejects(teklifDenetle({ikn:'2026/123',text:' ',taslak:'Sentetik taslak '.repeat(30)}),/kaynak metni boş veya geçersiz/);
|
|
await assert.rejects(teklifTaslak({ikn:'2026/123',text:' '}),/kaynak metni boş veya geçersiz/);
|
|
});
|
|
test('audit requirement collection retains all supplied tender items and explicit conditions',async()=>{
|
|
const {gereklilikMetni}=await import('../server/ai-teklif.mjs');
|
|
const items=Array.from({length:100},(_,i)=>({ad:`Kalem ${i+1}`,miktar:i+1,birim:'adet'}));
|
|
const conditions=Array.from({length:80},(_,i)=>`Koşul ${i+1}`);
|
|
const collected=gereklilikMetni({items},conditions,'',true);
|
|
assert.equal(collected.length,180);assert.ok(collected.includes('Kalem: Kalem 100 100 adet'));assert.ok(collected.includes('Koşul 80'));
|
|
});
|