chore:“发送名片”按钮功能正常
This commit is contained in:
@@ -62,6 +62,33 @@ test('common: normalizeQrStyle 合法直通, 未知/空回落 card(默认白卡)
|
||||
assert.equal(m.normalizeQrStyle('rainbow'), 'card');
|
||||
// 面板只下发小写档位; 大写属未知值, 回落 card(保守, 不炸)
|
||||
assert.equal(m.normalizeQrStyle('CARD'), 'card');
|
||||
// 中文档位名别名(面板下拉若直接存中文档名, 归一化兜住, 否则 C 端永远回落 card)
|
||||
assert.equal(m.normalizeQrStyle('原图'), 'plain');
|
||||
assert.equal(m.normalizeQrStyle('白卡描边'), 'card');
|
||||
assert.equal(m.normalizeQrStyle('主题色衬底'), 'theme');
|
||||
assert.equal(m.normalizeQrStyle('渐变圆角'), 'gradient');
|
||||
});
|
||||
|
||||
test('common: normalizeQrPosition 位置档中文别名兼容', async () => {
|
||||
const m = await import('../components-diy/diy-card-common.js');
|
||||
assert.equal(m.normalizeQrPosition('资料行下方'), 'rows');
|
||||
assert.equal(m.normalizeQrPosition('头部右侧'), 'head');
|
||||
assert.equal(m.normalizeQrPosition('右上角浮层'), 'corner');
|
||||
assert.equal(m.normalizeQrPosition('主按钮上方'), 'bottom');
|
||||
// 英文码直通 / 未知回落 rows
|
||||
assert.equal(m.normalizeQrPosition('bottom'), 'bottom');
|
||||
assert.equal(m.normalizeQrPosition('nope'), 'rows');
|
||||
});
|
||||
|
||||
test('common: darkenColor 压暗生成可见渐变终止色', async () => {
|
||||
const m = await import('../components-diy/diy-card-common.js');
|
||||
// 纯色压暗 0.18: #119dff → #0e81d1
|
||||
assert.equal(m.darkenColor('#119dff', 0.18), '#0e81d1');
|
||||
// 比例越大约暗
|
||||
assert.notEqual(m.darkenColor('#119dff', 0.4), m.darkenColor('#119dff', 0.18));
|
||||
// 非法输入原样返回(不影响既有渲染)
|
||||
assert.equal(m.darkenColor('#12', 0.18), '#12');
|
||||
assert.equal(m.darkenColor('rgb(1,2,3)', 0.18), 'rgb(1,2,3)');
|
||||
});
|
||||
|
||||
test('common: resolveQrSize 自定义>档位自动, 单位 px→rpx(×2)', async () => {
|
||||
@@ -121,8 +148,8 @@ test('mini: qrBlockStyle 四档外观分支(多彩只装饰外围, 码黑白保
|
||||
assert.match(miniSrc, /if \(this\.qrStyle === 'card'\) \{\s+style\.background = '#ffffff';\s+style\.border = '2rpx solid #EEF0F3';\s+style\.borderRadius = '12rpx';\s+style\.padding = '10rpx';/);
|
||||
// theme 主题色衬底
|
||||
assert.match(miniSrc, /else if \(this\.qrStyle === 'theme'\) \{\s+style\.background = theme;\s+style\.borderRadius = '12rpx';\s+style\.padding = '10rpx';/);
|
||||
// gradient 渐变 + 6rpx 紧凑内边距
|
||||
assert.match(miniSrc, /else if \(this\.qrStyle === 'gradient'\) \{\s+style\.background = themeGradient\(this\.card\);\s+style\.borderRadius = '16rpx';\s+style\.padding = '6rpx';/);
|
||||
// gradient 渐变 + 6rpx 紧凑内边距; 单主题色用 darkenColor 兜底终止色(可见明暗)
|
||||
assert.match(miniSrc, /else if \(this\.qrStyle === 'gradient'\) \{\s+const end = \(this\.card && this\.card\.gradient_end\) \|\| darkenColor\(theme, 0\.18\);\s+style\.background = 'linear-gradient\(135deg, ' \+ theme \+ ' 0%, ' \+ end \+ ' 100%\)';\s+style\.borderRadius = '16rpx';\s+style\.padding = '6rpx';/);
|
||||
// plain 不进任何分支(无衬底, 即原图) —— 三个 if 之外不再设 background
|
||||
assert.ok(!miniSrc.includes("qrStyle === 'plain' ? style.background"));
|
||||
});
|
||||
@@ -212,6 +239,29 @@ test('show: 二维码位置四档(与面板下拉/mini 基件同口径, 未配
|
||||
assert.match(showSrc, /qrTransform\(this\.c\.qrOffsetX,\s*this\.c\.qrOffsetY\)/);
|
||||
});
|
||||
|
||||
test('show: 发名片按钮开关(面板「底部按钮 → 发送名片按钮」, 默认显示; 文案消费 detailBtnText)', () => {
|
||||
assert.match(showSrc, /showSendBtn\(\)\s*\{\s*return flagOn\(this\.c\.showDetailBtn,\s*true\)/);
|
||||
assert.match(showSrc, /v-if="showSendBtn" class="show-send"/);
|
||||
// 按钮文案: 面板「按钮文案」可配, 默认「发送名片」
|
||||
assert.match(showSrc, /sendBtnText\(\)\s*\{\s*return this\.c\.detailBtnText \|\| '发送名片';/);
|
||||
assert.match(showSrc, /<text class="show-send-text">\{\{ sendBtnText \}\}<\/text>/);
|
||||
// 反例形态: 不允许硬编码文案(绕过面板配置)
|
||||
assert.ok(!showSrc.includes('<text class="show-send-text">发名片</text>'));
|
||||
});
|
||||
|
||||
test('show: 二维码外观四档(plain 原图 / card 白卡描边 / theme 主题色 / gradient 渐变, 与 mini 同口径)', () => {
|
||||
assert.match(showSrc, /qrStyle\(\)\s*\{\s*return normalizeQrStyle\(this\.c\.qrStyle\)/);
|
||||
// 四个分支逐行收紧, 防跨分支 lazy 匹配造成假过(与 mini qrBlockStyle 同款值)
|
||||
assert.match(showSrc, /if \(this\.qrStyle === 'card'\) \{\s+style\.background = '#ffffff';\s+style\.border = '2rpx solid #EEF0F3';\s+style\.borderRadius = '12rpx';\s+style\.padding = '10rpx';/);
|
||||
assert.match(showSrc, /else if \(this\.qrStyle === 'theme'\) \{\s+style\.background = theme;\s+style\.borderRadius = '12rpx';\s+style\.padding = '10rpx';/);
|
||||
// gradient 分支: 单主题色时也要可见明暗渐变(用 darkenColor 兜底终止色), 不能退化成纯色
|
||||
assert.match(showSrc, /else if \(this\.qrStyle === 'gradient'\) \{\s+const theme = \(this\.card && this\.card\.theme_color\) \|\| CardTokens\.color\.primary;\s+const end = \(this\.card && this\.card\.gradient_end\) \|\| darkenColor\(theme, 0\.18\);\s+style\.background = 'linear-gradient\(135deg, ' \+ theme \+ ' 0%, ' \+ end \+ ' 100%\)';\s+style\.borderRadius = '16rpx';\s+style\.padding = '6rpx';/);
|
||||
// plain 不进任何分支(无衬底, 即原图)
|
||||
assert.ok(!showSrc.includes("qrStyle === 'plain' ? style.background"));
|
||||
// 四个位置档共用 qrBlockStyle
|
||||
assert.equal((showSrc.match(/:style="\[qrBlockStyle, qrShiftStyle\]"/g) || []).length, 4);
|
||||
});
|
||||
|
||||
test('show: 自绘版式自带小二维码(开关可关 + 点击进详情, 尺寸/提示文字面板可调)', () => {
|
||||
assert.match(showSrc, /class="card-qr"/);
|
||||
assert.match(showSrc, /\$util\.img\(card\.qr_url\)/);
|
||||
|
||||
Reference in New Issue
Block a user