55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
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,
|
|
)
|
|
})
|