fix: normalize Turkish search and isolate query item matches

This commit is contained in:
2026-09-06 09:22:05 +03:00
parent efec6e434d
commit a34b758430
5 changed files with 48 additions and 15 deletions
+19
View File
@@ -0,0 +1,19 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {normalizeTenderSearch,matchesTenderSearch,matchingItemResults} from '../src/services/tenderSearch.js';
test('Turkish search treats case, decomposed characters and spacing consistently across fields',()=>{
for(const value of ['IĞDIR','Iğdır','igdir',' IĞDIR ']) assert.equal(normalizeTenderSearch(value),'igdir');
for(const field of ['baslik','kurum']) assert.equal(matchesTenderSearch({[field]:'IĞDIR İL SAĞLIK'},'ığdır'),true);
assert.equal(matchesTenderSearch({items:[{ad:'STERİL TEST KİTİ'}]},'steril test'),true);
assert.equal(matchesTenderSearch({kalemler:['İmmünoloji']},'immunoloji'),true);
assert.equal(matchesTenderSearch({kalemler:[{ad:'Ölçüm'}]},'olcum'),true);
assert.equal(matchesTenderSearch({},' '),true);
assert.equal(matchesTenderSearch({baslik:'Mikroskop'},'hemogram'),false);
});
test('old item matches are unavailable immediately when a new query is entered',()=>{
const result={query:normalizeTenderSearch('hemogram'),matches:new Map([['2026/1',[{ad:'Hemogram'}]]])};
assert.equal(matchingItemResults(result,'HEMOGRAM'),result.matches);
assert.equal(matchingItemResults(result,'mikroskop'),null);
assert.equal(matchesTenderSearch({ikn:'2026/1',baslik:'Genel sarf'},'mikroskop',matchingItemResults(result,'mikroskop')),false);
assert.equal(matchingItemResults(result,''),null);
});