63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* ObsiGate — tests de la logique pure de la page « Rechercher partout »
|
|
* (fusion #68), sans DOM ni jsdom : résolution des bases, liens
|
|
* profonds et normalisation des 4 formats d'API.
|
|
*
|
|
* Le fichier frontend/js/recherche.js est chargé en ESM (frontend/js
|
|
* est "type": "module") ; ses helpers sont exposés via
|
|
* globalThis.RecherchePartout. Usage : node tests/frontend/recherche.test.mjs
|
|
*/
|
|
import { strict as assert } from "node:assert";
|
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
import path from "node:path";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const JS_FILE = path.resolve(__dirname, "..", "..", "frontend", "js", "recherche.js");
|
|
|
|
await import(pathToFileURL(JS_FILE).href);
|
|
const rp = globalThis.RecherchePartout;
|
|
assert.ok(rp, "RecherchePartout exposé");
|
|
|
|
let n = 0;
|
|
const ok = (cond, label) => {
|
|
assert.ok(cond, label);
|
|
n += 1;
|
|
};
|
|
|
|
ok(rp.isDevHost("og-dev.dracodev.net") === true, "dev reconnu");
|
|
ok(rp.isDevHost("x-dev.dracodev.net.evil") === false, "hôte piège rejeté");
|
|
|
|
const b = rp.resolveBases({
|
|
host: "og-dev.dracodev.net",
|
|
explicit: { tiktak: "https://tiktak-perso.example/" },
|
|
barUrls: {},
|
|
tabHrefs: {},
|
|
});
|
|
ok(b.tiktak === "https://tiktak-perso.example/", "explicite prioritaire");
|
|
ok(b.obsigate === "https://og-dev.dracodev.net/", "dev pour l'hôte courant");
|
|
ok(b.kanbante === "https://kanbante-dev.dracodev.net/", "dev avant href");
|
|
ok(
|
|
rp.searchPath("obsigate", "café") === "api/search?q=caf%C3%A9&vault=all&limit=8",
|
|
"path ObsiGate",
|
|
);
|
|
|
|
const items = rp.normalize(
|
|
"obsigate",
|
|
{ results: [{ vault: "home-bruno", path: "Notes/Idée.md", title: "Idée", snippet: "extrait" }] },
|
|
"https://og-dev.dracodev.net/",
|
|
"idée",
|
|
);
|
|
ok(
|
|
items[0].url === "https://og-dev.dracodev.net/#file=home-bruno:Notes%2FId%C3%A9e.md",
|
|
"lien profond ObsiGate",
|
|
);
|
|
ok(
|
|
rp.nativeSearchUrl("tiktak", "https://tiktak-dev.dracodev.net/", "q") ===
|
|
"https://tiktak-dev.dracodev.net/search?q=q",
|
|
"repli TikTak",
|
|
);
|
|
|
|
console.log(`recherche.test.mjs : ${n} assertions OK`);
|