// TTL de cache par provider (server/env-ttl.mjs) — priorité // `_` → `` → défaut, valeurs invalides ignorées. import { perProviderTtl } from '../env-ttl.mjs'; let pass = 0; const eq = (a, b, m) => { const x = JSON.stringify(a), y = JSON.stringify(b); if (x !== y) throw new Error(`${m}\n expected ${y}\n got ${x}`); pass++; console.log(` V ${m}`); }; const BASE = 'TESTCACHE_TTL_MS'; const cleanup = () => { delete process.env[BASE]; delete process.env[`${BASE}_YT`]; delete process.env[`${BASE}_ODYSEE`]; delete process.env[`${BASE}_BAD`]; }; // 1. Défaut seul cleanup(); eq(perProviderTtl(BASE, 'yt', 60000), 60000, 'sans env -> défaut'); // 2. Base globale process.env[BASE] = '30000'; eq(perProviderTtl(BASE, 'yt', 60000), 30000, 'base globale prise'); eq(perProviderTtl(BASE, 'ru', 60000), 30000, 'base globale valable pour tout provider'); // 3. Provider l'emporte sur la base process.env[`${BASE}_YT`] = '1000'; eq(perProviderTtl(BASE, 'yt', 60000), 1000, 'spécifique provider prioritaire'); eq(perProviderTtl(BASE, 'ru', 60000), 30000, 'les autres providers gardent la base'); // 4. id long normalisé (ODYSEE depuis 'odysee') process.env[`${BASE}_ODYSEE`] = '500'; eq(perProviderTtl(BASE, 'odysee', 60000), 500, 'id long -> suffixe MAJUSCULE'); // 5. Valeurs invalides ignorées (jamais de TTL négatif/nul/NaN) process.env[`${BASE}_BAD`] = 'abc'; eq(perProviderTtl(BASE, 'bad', 60000), 30000, 'suffixe non numérique ignore -> base'); process.env[`${BASE}_YT`] = '0'; eq(perProviderTtl(BASE, 'yt', 60000), 30000, 'suffixe 0 ignore (TTL nul interdit)'); delete process.env[BASE]; process.env[`${BASE}_YT`] = 'garbage'; eq(perProviderTtl(BASE, 'yt', 60000), 60000, 'base invalide -> défaut'); // 6. Provider absent / vide delete process.env[`${BASE}_YT`]; eq(perProviderTtl(BASE, '', 60000), 60000, 'provider vide -> défaut'); cleanup(); console.log(`\nOK ${pass} assertions`);