Files
ihaleist/tests/saved-filter-criteria.test.mjs

29 lines
2.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
});