/** * 配置服务单元测试 * 覆盖维度映射路径构建与嵌套键规整两项核心逻辑 * 运行: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(" "), ""); });