GFramework/tools/gframework-config-tool/test/containsSummary.test.js
gewuyou 7f98cafbfa fix(config-tool): 统一 contains 与本地化提示文案
- 修复 dependentRequired 校验消息键缺失导致的隐式 undefined 文案映射

- 统一 contains 与 dependent schema 相关中文提示措辞并补齐 maxContains hint 输出

- 补充本地化与 contains 摘要测试覆盖新增文案与回归场景
2026-04-30 13:23:19 +08:00

119 lines
3.3 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.

const test = require("node:test");
const assert = require("node:assert/strict");
const {buildContainsHintLines, describeContainsSchema} = require("../src/containsSummary");
const {createLocalizer} = require("../src/localization");
test("describeContainsSchema should reuse localized Chinese hint strings", () => {
const localizer = createLocalizer("zh-cn");
const summary = describeContainsSchema(
{
type: "string",
constValue: "\"potion\"",
constDisplayValue: "\"potion\"",
refTable: "item"
},
localizer);
assert.equal(summary, "string, 固定值:\"potion\", 引用表item");
});
test("describeContainsSchema should fall back to localized item label", () => {
const localizer = createLocalizer("en");
const summary = describeContainsSchema({}, localizer);
assert.equal(summary, "Item");
});
test("buildContainsHintLines should include default minContains when schema omits it", () => {
const localizer = createLocalizer("en");
const lines = buildContainsHintLines(
{
contains: {
type: "integer",
constValue: "5",
constDisplayValue: "5"
}
},
localizer);
assert.deepEqual(lines, [
"Contains: integer, Const: 5",
"Min contains: 1"
]);
});
test("buildContainsHintLines should use explicit minContains when provided", () => {
const localizer = createLocalizer("en");
const lines = buildContainsHintLines(
{
minContains: 2,
maxContains: 3,
contains: {
type: "string",
constValue: "\"potion\"",
constDisplayValue: "\"potion\"",
refTable: "item"
}
},
localizer);
assert.deepEqual(lines, [
"Contains: string, Const: \"potion\", Ref table: item",
"Min contains: 2",
"Max contains: 3"
]);
});
test("describeContainsSchema should format enum-based contains schema in English", () => {
const localizer = createLocalizer("en");
const summary = describeContainsSchema(
{
type: "string",
enumValues: ["potion", "elixir"],
refTable: "item"
},
localizer);
assert.equal(summary, "string, Allowed: potion, elixir, Ref table: item");
});
test("describeContainsSchema should format pattern-based contains schema in Chinese", () => {
const localizer = createLocalizer("zh-cn");
const summary = describeContainsSchema(
{
type: "string",
pattern: "^potion-",
refTable: "item"
},
localizer);
assert.equal(summary, "string, 正则模式:^potion-, 引用表item");
});
test("buildContainsHintLines should use updated Chinese contains hint wording", () => {
const localizer = createLocalizer("zh-cn");
const lines = buildContainsHintLines(
{
minContains: 1,
maxContains: 2,
contains: {
type: "string",
enumValues: ["potion", "elixir"]
}
},
localizer);
assert.deepEqual(lines, [
"Contains 条件string, 允许值potion, elixir",
"最少匹配数1",
"最多匹配数2"
]);
});