File size: 2,344 Bytes
e1ae2c6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 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);
});
});
|