share five tender QA fixture data
This commit is contained in:
@@ -8,6 +8,7 @@ import {randomBytes} from 'node:crypto';
|
||||
import {createServer as netServer} from 'node:net';
|
||||
import {readyBid} from './fixtures/ready-bid.mjs';
|
||||
import {printBidFixture} from './fixtures/print-bid.mjs';
|
||||
import {healthAcceptanceCases} from './fixtures/health-acceptance.mjs';
|
||||
import {preparationSummary} from '../src/services/preparationSummary.js';
|
||||
const dir=mkdtempSync(join(tmpdir(),'ihaleist-browser-'));
|
||||
process.env.AUTH_SECRET=randomBytes(32).toString('hex');
|
||||
@@ -34,8 +35,7 @@ const pendingQaJobs=new Map();
|
||||
const qaHeartbeat=setInterval(()=>{for(const job of pendingQaJobs.values())qaJobs.heartbeatAiJob(job.id,job.runId);},5000);qaHeartbeat.unref();
|
||||
const probe=netServer();await new Promise(r=>probe.listen(0,'127.0.0.1',r));const port=probe.address().port;await new Promise(r=>probe.close(r));
|
||||
const api=spawn(process.execPath,['server/index.js'],{cwd:new URL('..',import.meta.url),env:{PATH:process.env.PATH,NODE_ENV:'test',AUTH_SECRET:process.env.AUTH_SECRET,IHALEIST_USER_DATA_DIR:dir,IHALEIST_SHARED_DATA_DIR:join(dir,'shared'),PORT:String(port),UYUM_GOMME:'0'},stdio:'ignore'});
|
||||
const entries=[['1582991','Giresun','10.09.2026','10:00'],['1534665','Kayseri','22.09.2026','11:00'],['1499061','Akdeniz','22.09.2026','10:30'],['1573235','Aksaray','09.09.2026','10:00'],['1523851','Tepecik','11.09.2026','10:00']];
|
||||
const tenders=entries.map(([id,city,date,time])=>({id:'qa-'+id,ikn:'2026/'+id,baslik:'QA — '+city+' laboratuvar',kurum:city+' TEST KURUMU',sehir:city,tarih:date,saat:time,alimTuru:'Mal Alımı',usul:id==='1534665'?'Açık İhale':'Pazarlık Usulü',kurumTipi:'Eğitim ve Araştırma Hastaneleri',sektor:'Laboratuvar & Ölçüm',sektorler:['Laboratuvar & Ölçüm'],durum:'Açık',takipte:false,kanbanStatus:'incelenecek',items:[{id:'1',ad:'Sentetik test kalemi',miktar:2,birim:'adet'}],aciklama:'Bu yalnızca yerel arayüz test verisidir. Teklif geçerlilik süresi 120 takvim günü. Birim fiyat teklif. '.repeat(3)}));
|
||||
const tenders=healthAcceptanceCases.map(({ikn: id,city,date,time})=>({id:'qa-'+id,ikn:'2026/'+id,baslik:'QA — '+city+' laboratuvar',kurum:city+' TEST KURUMU',sehir:city,tarih:date,saat:time,alimTuru:'Mal Alımı',usul:id==='1534665'?'Açık İhale':'Pazarlık Usulü',kurumTipi:'Eğitim ve Araştırma Hastaneleri',sektor:'Laboratuvar & Ölçüm',sektorler:['Laboratuvar & Ölçüm'],durum:'Açık',takipte:false,kanbanStatus:'incelenecek',items:[{id:'1',ad:'Sentetik test kalemi',miktar:2,birim:'adet'}],aciklama:'Bu yalnızca yerel arayüz test verisidir. Teklif geçerlilik süresi 120 takvim günü. Birim fiyat teklif. '.repeat(3)}));
|
||||
// Seed actual persistent history only in this disposable QA volume.
|
||||
process.env.IHALEIST_SHARED_DATA_DIR=join(dir,'shared');
|
||||
const {observeTenders}=await import('../server/tender-history.mjs');
|
||||
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
// Synthetic D10 records. Official tender documents remain a separate release gate.
|
||||
export const healthAcceptanceCases = [
|
||||
{ ikn: '1582991', city: 'Giresun', date: '10.09.2026', time: '10:00', scenario: 'mikroskop' },
|
||||
{ ikn: '1534665', city: 'Kayseri', date: '22.09.2026', time: '11:00', scenario: 'sarf' },
|
||||
{ ikn: '1499061', city: 'Akdeniz', date: '22.09.2026', time: '10:30', scenario: 'cihaz-servis' },
|
||||
{ ikn: '1573235', city: 'Aksaray', date: '09.09.2026', time: '10:00', scenario: 'kismi-teklif' },
|
||||
{ ikn: '1523851', city: 'Tepecik', date: '11.09.2026', time: '10:00', scenario: '100-kalem' },
|
||||
];
|
||||
@@ -1,19 +1,11 @@
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
// D10 smoke fixture: synthetic records only; official documents are still required for release acceptance.
|
||||
const cases = [
|
||||
['1582991', 'Giresun', '10.09.2026', '10:00', 'mikroskop'],
|
||||
['1534665', 'Kayseri', '22.09.2026', '11:00', 'sarf'],
|
||||
['1499061', 'Akdeniz', '22.09.2026', '10:30', 'cihaz-servis'],
|
||||
['1573235', 'Aksaray', '09.09.2026', '10:00', 'kismi-teklif'],
|
||||
['1523851', 'Tepecik', '11.09.2026', '10:00', '100-kalem'],
|
||||
];
|
||||
import { healthAcceptanceCases as cases } from './fixtures/health-acceptance.mjs';
|
||||
|
||||
test('D10 five-tender acceptance fixture stays complete and unique', () => {
|
||||
assert.equal(new Set(cases.map(([ikn]) => ikn)).size, 5);
|
||||
assert.deepEqual(cases.map(([, , , , scenario]) => scenario), ['mikroskop','sarf','cihaz-servis','kismi-teklif','100-kalem']);
|
||||
for (const [ikn, city, date, time] of cases) {
|
||||
assert.equal(new Set(cases.map(({ikn}) => ikn)).size, 5);
|
||||
assert.deepEqual(cases.map(({scenario}) => scenario), ['mikroskop','sarf','cihaz-servis','kismi-teklif','100-kalem']);
|
||||
for (const {ikn,city,date,time} of cases) {
|
||||
assert.match(ikn, /^\d{7}$/);
|
||||
assert.match(city, /^[A-Za-zÇĞİÖŞÜçğıöşü]+$/);
|
||||
assert.match(date, /^\d{2}\.\d{2}\.\d{4}$/);
|
||||
|
||||
Reference in New Issue
Block a user