import test from 'node:test'; import assert from 'node:assert/strict'; import {extractBidValidity,bidValidityForForm} from '../src/services/bidTerms.js'; import {qualifyAnalysis} from '../server/analysis-quality.mjs'; test('bid validity is structured from source with exact clause evidence',()=>{ const source='Teslimat 15 gün. TEKLİFLERİN GEÇERLİLİK SÜRESİ ihale tarihinden itibaren 120 (yüzyirmi) takvim günüdür.'; const terms=extractBidValidity(source); assert.equal(terms.days,120); assert.equal(source.slice(terms.evidence[0].start,terms.evidence[0].end),terms.evidence[0].quote); assert.equal(extractBidValidity('Garanti süresi 60 gün. Belge geçerlilik süresi 90 gün.').status,'not_found'); const result=qualifyAnalysis({},{text:source}); assert.equal(result.procurementTerms.bidValidity.days,120); assert.equal(bidValidityForForm('',JSON.parse(JSON.stringify(result.procurementTerms.bidValidity))).days,120); }); test('conflicting clauses remain unresolved instead of choosing the first duration',()=>{ const a='Teklif geçerlilik süresi 120 takvim günü.'; const b='Tekliflerin geçerlilik süresi 60 gündür.'; assert.equal(extractBidValidity(a+' '+b).status,'conflict'); assert.equal(bidValidityForForm(a,extractBidValidity(b)).status,'conflict'); assert.equal(qualifyAnalysis({},{text:a+' '+b}).sourceReview.status,'partial'); assert.equal(extractBidValidity(a+' '+a).days,120); });