const assert = require('node:assert/strict'); const { readFileSync } = require('node:fs'); const { test } = require('node:test'); const ts = require('typescript'); const source = ts.createSourceFile( 'MonitoringAccountList.tsx', readFileSync(`${__dirname}/../src/components/accounts/MonitoringAccountList.tsx`, 'utf8'), ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX, ); const code = source.getFullText(); test('监控账号列表使用 Table,一行一个账号,保留详情入口和操作', () => { assert.match(code, / { assert.doesNotMatch(code, /title: '账号数据'/); for (const [title, value] of [ ['粉丝', 'account.follower_count'], ['关注', 'account.following_count'], ['作品', 'account.work_count ?? account.aweme_count ?? null'], ]) { assert.ok(code.includes(`title: '${title}',\n render: (_, account) => formatCount(${value}),`), `${title} 应为单独数值列`); } }); test('列表不展示冗长的平台账号,保留画像统计及同步异常', () => { assert.doesNotMatch(code, /row\.platform_account_key|account\.platform_account_key/); for (const field of ['follower_count', 'following_count', 'work_count', 'latest_published_at', 'last_sync_at', 'sync_error']) { assert.ok(code.includes(`account.${field}`), `${field} 应保留在表格中`); } });