fix(vip): preserve safe HTML in VIP copy

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-10-19 12:52:23 +08:00
1 parent 7a0445fc4a
commit 573040381d
15 files changed
+155 -118

No files matched your search

@@ -307,9 +307,21 @@ test('积分兑换明细.level 枚举净化后仍能通过校验,非法值依
assert.strictEqual(sanitize.invalid_unit.valid, false);
assert.deepStrictEqual(sanitize.invalid_unit.errors, ['积分兑换明细[0].unit has an invalid value']);
// VIP's HTML-capable fields pass the schema save sanitizer intact.
assert.strictEqual(sanitize.vip_html.valid, true);
assert.strictEqual(sanitize.vip_html.fields.pay_user_vip_1_name, '<b>会员</b>');
assert.strictEqual(sanitize.vip_html.fields.pay_user_vip_1_desc, '<em>简介</em>');
assert.strictEqual(sanitize.vip_html.fields.pay_user_vip_1_equity, '<p>权益</p>');
assert.strictEqual(sanitize.vip_html.fields.pay_user_vip_desc, '<span>会员介绍</span>');
assert.strictEqual(sanitize.vip_html.fields.vip_renew_desc, '<strong>续费</strong>');
assert.strictEqual(sanitize.vip_html.fields.vip_upgrade_desc, '<i>升级</i>');
assert.strictEqual(sanitize.vip_html.fields.vip_1_product[0].tag, '<b>推荐</b>');
// 字符串型枚举(palette)不受影响。
assert.strictEqual(sanitize.invalid_tag_class.valid, false);
assert.deepStrictEqual(sanitize.invalid_tag_class.errors, ['会员商品[0].tag_class has an invalid value']);
});
test('运行时归一化:默认值、价格净化、零价与非法行剔除', () => {
@@ -345,7 +357,12 @@ test('运行时归一化:默认值、价格净化、零价与非法行剔除',
// 自定义续费价格类型与折扣。
assert.strictEqual(custom.renew.price_type, 'customize');
assert.strictEqual(custom.renew.discount, 7.5);
assert.strictEqual(custom.renew.desc, '续费有礼');
assert.strictEqual(custom.renew.desc, '<b>续费有礼</b>');
assert.strictEqual(custom.upgrade.desc, '<i>升级王者</i>');
assert.strictEqual(custom.levels['1'].name, '青铜会员');
assert.strictEqual(custom.levels['1'].name_html, '<strong>青铜会员</strong>');
assert.strictEqual(custom.levels['1'].desc, '<em>专属权益</em>');
assert.strictEqual(custom.levels['1'].equity, '<p>一对一支持</p>');
assert.strictEqual(custom.levels['1'].renew_products[0].tag_class, 'b-red');
// 升级三块参数透传。
assert.strictEqual(custom.upgrade.unit_price, '12.50');