From 6750cdf81ab14a7e09a2d2755df6fadf27833fd7 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 28 Oct 2026 14:45:06 -0400 Subject: [PATCH] recherche: tests alignement console /api/v1/recherche --- tests/frontend/recherche.test.mjs | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/frontend/recherche.test.mjs b/tests/frontend/recherche.test.mjs index c9961df..6d90ae3 100644 --- a/tests/frontend/recherche.test.mjs +++ b/tests/frontend/recherche.test.mjs @@ -141,4 +141,39 @@ ok(rp.resolveConsoleBase({ host: "tiktak-dev.dracodev.net" }) === "https://agent ok(rp.resolveConsoleBase({ host: "x.example", tabHrefs: { console: "https://console-perso.example/" } }) === "https://console-perso.example/", "console : href onglet barre"); ok(rp.resolveConsoleBase({}) === "https://agent.dracodev.net/", "console : défaut prod"); + +/* ---- Alignement console (agent-commun /api/v1/recherche) ---- */ +let rc; +ok(rp.CONSOLE_SEARCH_PATH === "api/v1/recherche", "console : chemin reel /api/v1/recherche"); +ok(rp.CONSOLE_SEARCH_LIMIT === 20, "console : limite 20 (plafond par type)"); +rc = rp.normalizeConsole({ resultats: [ + { type: "discussion", id: "c42", titre: "Conv", extrait: "ex", statut: null, domaine: "pro", section: "conversation", objet: "c42", lien: "/?section=conversation&disc=c42" }, + { type: "mission", id: "t1", titre: "Mission", extrait: "ex", statut: "paused_budget", domaine: "pro", section: "missions", objet: "t1", lien: "/?section=missions&objet=t1" }, + { type: "approbation", id: "a9", titre: "publier", extrait: "ex", statut: "pending", domaine: null, section: "approbations", objet: "a9", lien: "/?section=approbations&objet=a9" }, + { type: "objectif", id: "o3", titre: "Obj", extrait: "ex", statut: "actif", domaine: "pro", section: "objectifs", objet: "o3", lien: "/?section=objectifs&objet=o3" }, + { type: "activite", id: "a7", titre: "Act", extrait: "ex", statut: "terminee", domaine: "pro", section: null, objet: "a7", lien: "/?activite=a7" }, + { type: "livrable", id: "l1", titre: "Liv", extrait: "ex", statut: "terminee", domaine: "pro", section: "livrables", objet: null, lien: "/?section=livrables" }, + { type: "planification", id: "p1", titre: "Plan", extrait: "ex", statut: "active", domaine: "pro", section: "planifie", objet: null, lien: "/?section=planifie" }, + { type: "identite", id: "i1", titre: "Id", extrait: "ex", statut: "active", domaine: null, section: "identites", objet: null, lien: "/?section=identites" }, +] }, "https://agent-dev.dracodev.net/"); +ok(rc.recognized === true && rc.items.length === 8, "console : 8 resultats reconnus"); +ok(rc.items[0].url === "https://agent-dev.dracodev.net/?section=conversation&disc=c42", "console : lien profond discussion"); +ok(rc.items[1].url === "https://agent-dev.dracodev.net/?section=missions&objet=t1" && rc.items[1].context === "Mission \u00b7 paused_budget \u00b7 pro", "console : lien mission + contexte statut/domaine"); +ok(rc.items[2].url === "https://agent-dev.dracodev.net/?section=approbations&objet=a9", "console : lien profond approbation"); +ok(rc.items[3].url === "https://agent-dev.dracodev.net/?section=objectifs&objet=o3", "console : lien profond objectif"); +ok(rc.items[4].url === "https://agent-dev.dracodev.net/?activite=a7", "console : lien activite sans section"); +ok(rc.items[5].url === "https://agent-dev.dracodev.net/?section=livrables", "console : livrable = vue seulement"); +ok(rc.items[6].url === "https://agent-dev.dracodev.net/?section=planifie", "console : planification = vue seulement"); +ok(rc.items[7].url === "https://agent-dev.dracodev.net/?section=identites", "console : identite = vue seulement"); +rc = rp.normalizeConsole({ resultats: [ + { type: "mission", id: "t9", titre: "Sans lien", extrait: "", statut: null, domaine: null, section: "missions", objet: "t9" }, + { type: "activite", id: "a9", titre: "Act sans lien", extrait: "", statut: null, domaine: null, section: null, objet: "a9" }, +] }, "https://agent.dracodev.net/"); +ok(rc.items[0].url === "https://agent.dracodev.net/?section=missions&objet=t9", "console : lien reconstruit sans lien servi"); +ok(rc.items[1].url === "https://agent.dracodev.net/?activite=a9", "console : lien activite reconstruit"); +rc = rp.normalizeConsole({ resultats: [] }, "https://agent.dracodev.net/"); +ok(rc.recognized === true && rc.items.length === 0, "console : resultats vide reconnu (vide honnete, pas indisponible)"); +ok(rp.consoleLinkFor({ type: "discussion", id: "c1" }) === "/?section=conversation&disc=c1", "consoleLinkFor discussion"); +ok(rp.resolveConsoleBase({ host: "x.example", tabHrefs: { agent: "https://agent-perso.example/" } }) === "https://agent-perso.example/", "console : href onglet barre agent accepte"); + console.log(`recherche.test.mjs : ${n} assertions OK`);