Files
web_hgcg_h5/tests/navigation-page.test.mjs
T
2026-10-27 17:39:27 +07:00

29 lines
2.2 KiB
JavaScript

import {test} from 'node:test';
import assert from 'node:assert/strict';
import {readFile} from 'node:fs/promises';
import ts from 'typescript';
async function moduleUrl(file,replace=code=>code){
const source=await readFile(new URL(file,import.meta.url),'utf8');
return 'data:text/javascript;base64,'+Buffer.from(replace(ts.transpileModule(source,{compilerOptions:{target:ts.ScriptTarget.ES2022,module:ts.ModuleKind.ESNext}}).outputText)).toString('base64');
}
const protocol=await moduleUrl('../src/lib/api/protocol.ts');
const siteUrl=await moduleUrl('../src/lib/site.ts');
const {navigationPageData}=await import(await moduleUrl('../src/lib/navigation-page.ts',code=>code.replace("'./api/protocol'",JSON.stringify(protocol)).replace("'./site'",JSON.stringify(siteUrl))));
test('navigation entry and permanent address always use the site domain, never configured mirrors',()=>{
for(const config of [{navPageList:[{line:1,url:'https://one.test'},{line:2,url:'https://two.test'}]},{config:{dhNewUrlAddr1:'https://nav-one.test',foreverUrlAddr:'https://permanent.test'}},{navPageList:null}]){
const data=navigationPageData(config);
assert.deepEqual(data.routes,[{line:1,href:'https://huangguocg.com/',label:'线路一'}]);
assert.equal(data.permanent,'https://huangguocg.com/');
}
const empty=navigationPageData({});assert.equal(empty.telegram,'https://t.me/jbd125');assert.equal(empty.telegramHandle,'@jbd125');
});
test('navigation uses the fixed site name, configured description and only the official TG contact',()=>{
const data=navigationPageData({seoNavInfo:JSON.stringify({dhSiteName:'配置导航站',dhDescription:'配置说明'}),config:{telegram:'javascript:bad',telegramAdd:'@business_91',tgGroup:'',twitterAddr:'data:text/html,bad'},newAddressInfo:{tgGroup:'@group_91',twitterAddr:'https://x.com/configured'}});
assert.equal(data.siteName,'黄果吃瓜');assert.equal(data.description,'配置说明');
assert.equal(data.telegram,'https://t.me/jbd125');assert.equal(data.telegramHandle,'@jbd125');assert.equal(data.tgGroup,undefined);assert.equal(data.twitter,undefined);
assert.equal(navigationPageData({config:{dhSiteName:'配置名称'}}).siteName,'黄果吃瓜');
});