Files
menav/test/multi-level-sites-external-default.node-test.js
2026-01-04 21:07:07 +08:00

70 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const os = require('node:os');
const path = require('node:path');
const { loadConfig } = require('../src/generator.js');
function withTempCwd(callback) {
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'menav-multilevel-external-test-'));
const originalCwd = process.cwd();
try {
process.chdir(tmpDir);
callback(tmpDir);
} finally {
process.chdir(originalCwd);
fs.rmSync(tmpDir, { recursive: true, force: true });
}
}
test('多级结构下 sites.external 未配置时应默认 true且 external:false 不应被覆盖', () => {
withTempCwd((tmpDir) => {
const defaultConfigDir = path.join(tmpDir, 'config', '_default');
const defaultPagesDir = path.join(defaultConfigDir, 'pages');
fs.mkdirSync(defaultPagesDir, { recursive: true });
fs.writeFileSync(path.join(defaultConfigDir, 'site.yml'), 'title: Test\n', 'utf8');
fs.writeFileSync(
path.join(defaultPagesDir, 'bookmarks.yml'),
[
'title: 书签',
'subtitle: bookmarks',
'template: bookmarks',
'categories:',
' - name: 技术资源',
' groups:',
' - name: 组内站点',
' sites:',
' - name: GroupSite',
' url: https://example.com/group',
' subcategories:',
' - name: 前端开发',
' groups:',
' - name: 框架库',
' subgroups:',
' - name: 深层分组',
' sites:',
' - name: DeepDefaultExternal',
' url: https://example.com/deep-default',
' - name: DeepExternalFalse',
' url: https://example.com/deep-false',
' external: false',
'',
].join('\n'),
'utf8'
);
const config = loadConfig();
const groupSite = config.bookmarks.categories[0].groups[0].sites[0];
assert.equal(groupSite.external, true);
const deepSites = config.bookmarks.categories[0].subcategories[0].groups[0].subgroups[0].sites;
assert.equal(deepSites[0].external, true);
assert.equal(deepSites[1].external, false);
});
});