22 lines
1.6 KiB
JavaScript
22 lines
1.6 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'});
|
||
assert.throws(()=>savedFilterCriteria({bolge:'Bilinmeyen'}),/tanınmadı/);
|
||
assert.throws(()=>savedFilterCriteria({sehir:[]}),/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);
|
||
});
|