feat(search): suggestions sans doublons + suggestions locales a la frappe
This commit is contained in:
@@ -20,6 +20,7 @@ function logOk(msg) { console.log(`✓ ${msg}`); }
|
||||
const yt = (await import('../providers/youtube.mjs')).default;
|
||||
const { parseYoutubeSuggestResponse } = await import('../providers/youtube.mjs');
|
||||
const dm = (await import('../providers/dailymotion.mjs')).default;
|
||||
const { dedupeSuggestGroups } = await import('../suggest.mjs');
|
||||
|
||||
// Bare JSON payload
|
||||
expect(
|
||||
@@ -56,6 +57,17 @@ expect(JSON.stringify(await yt.suggest('a')) === '[]', 'yt.suggest short query r
|
||||
expect(JSON.stringify(await dm.suggest('x')) === '[]', 'dm.suggest short query returns [] without network');
|
||||
logOk('suggest min-length guard (no network)');
|
||||
|
||||
// Cross-provider dedup: the same occurrence is only returned once (first provider wins)
|
||||
{
|
||||
const groups = dedupeSuggestGroups(
|
||||
{ yt: ['Tutoriel Angular', 'tutoriel android'], dm: ['TUTORIEL angular', 'autre', ''] },
|
||||
['yt', 'dm'],
|
||||
);
|
||||
expect(JSON.stringify(groups.yt) === JSON.stringify(['Tutoriel Angular', 'tutoriel android']), 'first provider keeps its occurrences');
|
||||
expect(JSON.stringify(groups.dm) === JSON.stringify(['autre']), 'duplicates removed from later providers');
|
||||
logOk('dedupeSuggestGroups cross-provider (no duplicates)');
|
||||
}
|
||||
|
||||
// ---------- 2) API contract against a real isolated server ----------
|
||||
const PORT = await new Promise((resolve) => {
|
||||
const srv = net.createServer();
|
||||
|
||||
Reference in New Issue
Block a user