49 lines
2.4 KiB
JavaScript
49 lines
2.4 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const { readFileSync } = require('node:fs');
|
|
const { test } = require('node:test');
|
|
const ts = require('typescript');
|
|
|
|
const source = ts.createSourceFile(
|
|
'index.tsx',
|
|
readFileSync(`${__dirname}/../src/pages/accounts/monitoring/$id/index.tsx`, 'utf8'),
|
|
ts.ScriptTarget.Latest,
|
|
true,
|
|
ts.ScriptKind.TSX,
|
|
);
|
|
const code = source.getFullText();
|
|
|
|
test('关注、粉丝、获赞单独一行,正常字体颜色', () => {
|
|
// 从 Descriptions 移出,不再以 label+children 形式出现
|
|
for (const label of ['粉丝', '关注', '获赞']) {
|
|
assert.ok(!code.includes(`label: '${label}', children:`), `${label} 不应留在 Descriptions`);
|
|
}
|
|
assert.ok(code.includes('competitor.following_count'), '应有关注数');
|
|
assert.ok(code.includes('competitor.follower_count'), '应有粉丝数');
|
|
assert.ok(code.includes('competitor.total_favorited'), '应有获赞数');
|
|
assert.ok(code.includes("{ label: '关注', value: competitor.following_count }"), '关注数据行');
|
|
assert.ok(code.includes("{ label: '粉丝', value: competitor.follower_count }"), '粉丝数据行');
|
|
assert.ok(code.includes("{ label: '获赞', value: competitor.total_favorited }"), '获赞数据行');
|
|
assert.match(code, /formatCount\(value\)/, '计数统一走 formatCount');
|
|
// 不灰:画像区不得使用 secondary 灰色文本
|
|
assert.doesNotMatch(code, /type="secondary"/, '画像数据应为正常颜色');
|
|
});
|
|
|
|
test('作者介绍单独一行,不展示「作者介绍」label', () => {
|
|
assert.ok(!code.includes("label: '作者介绍'"), '不应有作者介绍 label');
|
|
assert.ok(code.includes('competitor.signature'), '应有签名数据');
|
|
// 单行省略 + 结尾「更多」hover 弹出全文,保留换行
|
|
assert.match(code, /<Typography\.Text[^>]*ellipsis/, '作者介绍应为单行省略文本');
|
|
assert.match(code, /<Popover\b/, '应使用 Popover 承载全文');
|
|
assert.match(code, />更多</, '结尾应有「更多」触发器');
|
|
assert.match(code, /pre-wrap/, '全文应保留换行');
|
|
assert.match(code, /competitor\.signature \?/, '签名应判空');
|
|
});
|
|
|
|
test('昵称后展示抖音主页链接,不再单独展示平台账号', () => {
|
|
assert.ok(
|
|
code.includes('https://www.douyin.com/user/${competitor.platform_account_key}'),
|
|
'主页链接应使用平台账号拼接',
|
|
);
|
|
assert.doesNotMatch(code, /label: '平台账号'/, '不应再展示平台账号项');
|
|
});
|