fix: export filtered tender list as real XLSX

This commit is contained in:
2026-09-06 09:19:41 +03:00
parent 9c7055a543
commit f593d5e372
4 changed files with 75 additions and 26 deletions
+21
View File
@@ -0,0 +1,21 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import ExcelJS from 'exceljs';
import {createTenderWorkbook} from '../src/services/tenderWorkbook.js';
test('list XLSX roundtrip preserves all rows, Turkish text, special characters and text-only cells',async()=>{
const rows=Array.from({length:125},(_,i)=>({ikn:`2026/00${i}`,baslik:i===0?'=1+1':'İğdır, "Kit"\nTest # &',
kurum:'Sağlık',sehir:'Iğdır',tarih:'01.10.2026',saat:'09:30',cpv:['001','002'],kaynakUrl:'https://example.test/?a=1&b=2#ilan'}));
const bytes=await createTenderWorkbook(rows);
assert.equal(Buffer.from(bytes).subarray(0,2).toString(),'PK');
const book=new ExcelJS.Workbook();await book.xlsx.load(bytes);
const sheet=book.getWorksheet('İhale Listesi');
assert.equal(sheet.rowCount,126);
assert.equal(sheet.getCell('A2').value,'2026/000');
assert.equal(sheet.getCell('B2').value,'=1+1');
assert.equal(sheet.getCell('B2').type,ExcelJS.ValueType.String);
assert.equal(sheet.getCell('B126').value,rows[124].baslik);
assert.equal(sheet.getCell('F2').value,'09:30');
assert.equal(sheet.getCell('I2').value,'001, 002');
assert.equal(sheet.getCell('J2').value,rows[0].kaynakUrl);
await assert.rejects(()=>createTenderWorkbook([]),/bulunamadı/);
});