feat: 维度映射/嵌套配置/地址栏导航/界面分区重构
This commit is contained in:
@@ -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(" "), "");
|
||||
});
|
||||
Reference in New Issue
Block a user