feat: 维度映射/嵌套配置/地址栏导航/界面分区重构

This commit is contained in:
cheney
2026-07-16 09:01:47 +08:00
commit 5bff1a186f
19 changed files with 4186 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
/**
* 配置服务单元测试
* 覆盖维度映射路径构建与嵌套键规整两项核心逻辑
* 运行:npm test
*/
const test = require("node:test");
const assert = require("node:assert");
const { buildConfigPath, normalizeKey } = require("../src/services/configService");
// 构造测试用项目对象的辅助函数
function makeProject(overrides) {
return {
enableIdc: true,
enableEnvironment: true,
enableGroup: true,
idcMapping: "path",
environmentMapping: "path",
groupMapping: "path",
...overrides,
};
}
test("1-1 全部维度映射为 path 时,路径包含全部维度前缀", () => {
const project = makeProject({});
const config = { idc: "华北", environment: "dev", group: "用户模块", key: "db.host" };
assert.strictEqual(buildConfigPath(project, config), "华北/dev/用户模块/db.host");
});
test("1-2 分组映射为 label 时,分组不进入路径", () => {
const project = makeProject({ groupMapping: "label" });
const config = { idc: "华北", environment: "dev", group: "用户模块", key: "db/host" };
assert.strictEqual(buildConfigPath(project, config), "华北/dev/db/host");
});
test("1-3 全部维度映射为 label 时,路径仅含嵌套键", () => {
const project = makeProject({ idcMapping: "label", environmentMapping: "label", groupMapping: "label" });
const config = { idc: "华北", environment: "dev", group: "用户模块", key: "db/pool/max" };
assert.strictEqual(buildConfigPath(project, config), "db/pool/max");
});
test("1-4 维度未启用时,即便映射为 path 也不进入路径", () => {
const project = makeProject({ enableIdc: false });
const config = { idc: "华北", environment: "dev", group: "用户模块", key: "db.host" };
assert.strictEqual(buildConfigPath(project, config), "dev/用户模块/db.host");
});
test("2-1 规整键:去除首尾斜杠与空白", () => {
assert.strictEqual(normalizeKey(" /db/host/ "), "db/host");
});
test("2-2 规整键:压缩连续斜杠并去除空段", () => {
assert.strictEqual(normalizeKey("db//pool///max"), "db/pool/max");
});
test("2-3 规整键:空输入返回空字符串", () => {
assert.strictEqual(normalizeKey(" "), "");
});