registry/test/configService.test.js
2026-07-16 11:44:55 +08:00

58 lines
2.2 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.

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