import { test } from 'node:test'; import assert from 'node:assert/strict'; import { createBriefBuilder, splitBriefText } from '../server/brief-content.mjs'; const parseDate = value => /^\d{4}-\d{2}-\d{2}$/.test(value || '') ? new Date(value+'T00:00:00+03:00') : null; test('brief includes more than 200 tracked tenders and 15 results without silent caps',()=>{ const keys=Array.from({length:205},(_,i)=>`2026/${i}`), seen=[]; const now=new Date('2026-09-06T21:05:00Z'); const build=createBriefBuilder({trackedKeys:()=>[...keys,keys[0]], upcoming:(email,tenders,days,clock)=>{assert.equal(clock,now);assert.equal(days,7);return [];}, results:key=>{seen.push(key);return [{baslik:key,sozlesmeTarihi:'2026-09-06'}];},parseDate}); const result=build('test@example.test',[],now); assert.equal(result.sonuclar.length,205); assert.equal(new Set(result.sonuclar.map(t=>t.ikn)).size,205); assert.equal(seen.length,205); assert.equal(result.bos,false); assert.equal(result.hafta,'07 Eylül 2026'); }); test('previous seven full Istanbul dates include the first day and exclude current/future dates',()=>{ const build=createBriefBuilder({trackedKeys:()=>['2026/1'],upcoming:()=>[],parseDate, results:()=>['2026-08-30','2026-08-31','2026-09-06','2026-09-07','2026-09-08','invalid'] .map(date=>({baslik:date,sozlesmeTarihi:date}))}); const result=build('test@example.test',[],new Date('2026-09-06T21:05:00Z')); assert.deepEqual(result.sonuclar.map(t=>t.baslik),['2026-09-06','2026-08-31']); }); test('long Turkish/emoji text is preserved exactly without splitting surrogate pairs',()=>{ const text=('Laboratuvar & test 🧪\n').repeat(600); const parts=splitBriefText(text); assert.ok(parts.length>3); assert.equal(parts.join(''),text); for(const part of parts){assert.ok(part.length<=3900);assert.ok(part.isWellFormed());} assert.deepEqual(splitBriefText(''),[]); assert.throws(()=>splitBriefText('text',1)); });