Files
ihaleist/tests/bid-firm.test.mjs

22 lines
1.3 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {bidFirmFields,bidFirmIssues} from '../src/services/bidFirmFields.js';
import {preparationSummary} from '../src/services/preparationSummary.js';
const firm=Object.fromEntries(bidFirmFields.map(f=>[f.k,f.k==='eposta'?'teklif+lab@example.test':'QA metin']));
test('filled but malformed email blocks both firm form and saved preparation summary',()=>{
assert.deepEqual(bidFirmIssues(firm),[]);
for(const eposta of ['yanlış','firma@','@firma.com','a b@firma.com','a@@firma.com']){
const firma={...firm,eposta};const issues=bidFirmIssues(firma);
assert.equal(issues.length,1);assert.equal(issues[0].k,'eposta');
const summary=preparationSummary({bidDraft:{firma}},{documents:[]});
assert.ok(summary.issues.some(x=>x.target==='firm:eposta'&&x.text===issues[0].message));
}
assert.deepEqual(bidFirmIssues({...firm,eposta:' teklif@example.test '}),[]);
});
test('whitespace and non-scalar required values are incomplete; optional registry field stays optional',()=>{
for(const field of bidFirmFields.filter(f=>f.zorunlu)){
for(const bad of [' ',null,{},[]])assert.ok(bidFirmIssues({...firm,[field.k]:bad}).some(x=>x.k===field.k));
}
assert.deepEqual(bidFirmIssues({...firm,sicilNo:''}),[]);
});