Apply saved filters to tender search with visible region criteria

This commit is contained in:
2026-09-06 13:40:26 +03:00
parent 2a9281c9a5
commit 2f86c6d690
8 changed files with 90 additions and 11 deletions
+21
View File
@@ -0,0 +1,21 @@
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);
});