feat: preserve search text in saved tender filters

This commit is contained in:
2026-09-06 16:03:49 +03:00
parent e4a1fd0f5b
commit bcfeb6995c
5 changed files with 35 additions and 4 deletions
+8 -1
View File
@@ -10,10 +10,17 @@ test('province-based regions cover all 81 cities exactly once and normalize Turk
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.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);