29 lines
2.2 KiB
JavaScript
29 lines
2.2 KiB
JavaScript
import test from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import {REGION_CITIES,matchesRegion,matchesProcurement,savedFilterCriteria} from '../src/services/savedFilterCriteria.js';
|
||
import {CITIES_LIST} from '../src/data/constants.js';
|
||
test('province-based regions cover all 81 cities exactly once and normalize Turkish names',()=>{
|
||
const cities=Object.values(REGION_CITIES).flatMap(value=>value.split(','));
|
||
assert.equal(cities.length,81);assert.deepEqual([...cities].sort(),[...CITIES_LIST].sort());assert.equal(new Set(cities).size,81);
|
||
assert.equal(matchesRegion({sehir:' giresun '},'KARADENİZ BÖLGESİ'),true);
|
||
assert.equal(matchesRegion({sehir:'Kayseri'},'KARADENİZ BÖLGESİ'),false);
|
||
assert.equal(matchesRegion({sehir:''},'KARADENİZ BÖLGESİ'),false);
|
||
});
|
||
test('saved criteria preserves all five fields and rejects unrecognized regions',()=>{
|
||
assert.deepEqual(savedFilterCriteria({sehir:' Giresun ',bolge:'karadeniz bölgesi',sektor:'Laboratuvar',kurumTipi:'Hastaneler',usul:'Açık İhale'}),{city:'Giresun',region:'KARADENİZ BÖLGESİ',sector:'Laboratuvar',institution:'Hastaneler',procedure:'Açık İhale',keyword:'',institutionName:'',registration:''});
|
||
assert.throws(()=>savedFilterCriteria({bolge:'Bilinmeyen'}),/tanınmadı/);
|
||
assert.throws(()=>savedFilterCriteria({sehir:[]}),/geçersiz/);
|
||
});
|
||
test('saved search text survives serialization independently and malformed values are rejected',()=>{
|
||
const criteria=savedFilterCriteria(JSON.parse(JSON.stringify({anahtarKelime:' test ürünü ',kurumAdi:' Kayseri ',ikn:' 2026/1534665 '})));
|
||
assert.equal(criteria.keyword,'test ürünü');
|
||
assert.equal(criteria.institutionName,'Kayseri');
|
||
assert.equal(criteria.registration,'2026/1534665');
|
||
for(const key of ['anahtarKelime','kurumAdi','ikn'])assert.throws(()=>savedFilterCriteria({[key]:['invalid']}),/geçersiz/);
|
||
});
|
||
test('procedure filter uses explicit source procedure, not inferred purchase category',()=>{
|
||
assert.equal(matchesProcurement({alimTuru:'Mal Alımı',ihaleUsulu:'Açık İhale'},'Açık İhale'),true);
|
||
assert.equal(matchesProcurement({alimTuru:'Mal Alımı'},'Açık İhale'),false);
|
||
assert.equal(matchesProcurement({alimTuru:'Doğrudan Temin'},'Doğrudan Temin'),true);
|
||
});
|