import assert from 'node:assert/strict' import test from 'node:test' import { resolveAnnouncementVersion, shouldShowAnnouncementPopup, } from '../src/utils/announcement-ack.ts' test('公告版本:内容不变版本不变,忽略首尾空白', () => { const version = resolveAnnouncementVersion('平台担保交易,拒绝私下转账') assert.ok(version.startsWith('v1-')) assert.equal(resolveAnnouncementVersion(' 平台担保交易,拒绝私下转账 '), version) }) test('公告版本:内容变化即新版本,空内容没有版本', () => { const before = resolveAnnouncementVersion('旧公告') const after = resolveAnnouncementVersion('旧公告(已更新)') assert.notEqual(before, after) assert.equal(resolveAnnouncementVersion(''), '') assert.equal(resolveAnnouncementVersion(' '), '') }) test('弹窗判定:关闭/空正文不弹', () => { assert.equal( shouldShowAnnouncementPopup({ enabled: false, content: '公告内容', acknowledgedVersion: '' }), false, ) assert.equal( shouldShowAnnouncementPopup({ enabled: true, content: '', acknowledgedVersion: '' }), false, ) assert.equal(shouldShowAnnouncementPopup({ content: '公告内容' }), false) }) test('弹窗判定:未确认真弹,确认过同一版本不再弹,改内容后重新弹', () => { const content = '严禁私下交易' const version = resolveAnnouncementVersion(content) assert.equal( shouldShowAnnouncementPopup({ enabled: true, content, acknowledgedVersion: '' }), true, ) assert.equal( shouldShowAnnouncementPopup({ enabled: true, content, acknowledgedVersion: version }), false, ) assert.equal( shouldShowAnnouncementPopup({ enabled: true, content: '严禁私下交易(2026-10-25 更新)', acknowledgedVersion: version, }), true, ) })