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