fix: preserve bid drafts and align tender source data
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import {test} from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {quantityParts,validateBidRows,bidRowTotal} from '../src/services/bidValidation.js';
|
||||
import {yaziylaTL,teklifCetveliHtml} from '../src/services/bidDocs.js';
|
||||
test('Turkish quantities, decimal quantities and units are preserved',()=>{
|
||||
assert.deepEqual(quantityParts('2.138.330 puan'),{miktar:2138330,birim:'puan'});
|
||||
assert.deepEqual(quantityParts('1.234,50 litre'),{miktar:1234.5,birim:'litre'});
|
||||
assert.deepEqual(quantityParts('1.5 litre'),{miktar:1.5,birim:'litre'});
|
||||
assert.equal(quantityParts('kalem 15').miktar,null);
|
||||
assert.equal(validateBidRows([{name:'Kit',quantity:'20',birimFiyat:10}]).length,1);
|
||||
});
|
||||
test('empty and partially priced bids cannot generate a valid sheet',()=>{
|
||||
assert.ok(validateBidRows([]).length);
|
||||
assert.throws(()=>teklifCetveliHtml({},[],0));
|
||||
assert.ok(validateBidRows([{name:'Kit',quantity:'20 adet',birimFiyat:''}]).length);
|
||||
assert.equal(bidRowTotal({quantity:'3 adet',birimFiyat:'0.335'}),1.01);
|
||||
assert.equal(yaziylaTL(1.999),'iki Türk Lirası');
|
||||
});
|
||||
test('100 rows retain Turkish names and escaped content in printable sheet',()=>{
|
||||
const rows=Array.from({length:100},(_,i)=>({name:`Ölçüm <kit> ${i}`,quantity:'2 adet',birimFiyat:10}));
|
||||
const out=teklifCetveliHtml({firmaUnvan:'İğdır',ikn:'2026/1'},rows,2000);
|
||||
assert.equal((out.match(/Ölçüm <kit>/g)||[]).length,100);
|
||||
assert.ok(out.includes('İğdır'));assert.ok(out.includes('2.000,00'));
|
||||
});
|
||||
Reference in New Issue
Block a user