fix(更新日志): 面板随指定版本下拉联动;本机已是最新时展示本机条目

- 「指定版本更新」下拉选中版本时日志切到该版本自身的条目(升级/回退统一语义),
  未收录显示"暂无更新说明"(区块不消失),选回空项回默认区间;
  列表加载后自动默认选中第一条不触发切换
- 本机版本==线上最新时回退显示本机版本条目(原来整块消失),灰度/回滚仍隐藏
- 精简 4.0.20/4.0.21 超长文案,修复既有红测试(更新说明限 40 字)
This commit is contained in:
2026-09-16 01:02:13 +08:00
parent 79b5d40327
commit d189d94c3b
7 changed files with 152 additions and 17 deletions
+66 -1
View File
@@ -5,6 +5,7 @@ import {
CLIENT_CHANGELOG,
newestChangelogVersion,
selectChangelogEntries,
selectVersionEntry,
type ClientChangelogEntry,
} from '../src/shared/client-changelog.ts'
@@ -62,13 +63,57 @@ test('更新日志:落后多个版本时逐版本列出(含中间版本)',
assert.deepEqual(entries.map((entry) => entry.version), ['4.1.0', '4.0.11', '4.0.9'])
})
test('更新日志:已是最新版本时没有条目(面板隐藏该区块', () => {
test('更新日志:已是最新版本且不带 includeCurrent 时没有条目(确认框语义', () => {
assert.deepEqual(
selectChangelogEntries({ entries: FIXTURE, currentVersion: '4.0.11', latestVersion: '4.0.11' }),
[],
)
})
test('更新日志:面板展示(includeCurrent)在本机已是最新时给出本机版本条目', () => {
const entries = selectChangelogEntries({
entries: FIXTURE,
currentVersion: '4.0.11',
latestVersion: '4.0.11',
includeCurrent: true,
})
assert.deepEqual(entries.map((entry) => entry.version), ['4.0.11'])
})
test('更新日志:面板展示在有更新时行为不变(只给本机之后的条目)', () => {
const entries = selectChangelogEntries({
entries: FIXTURE,
currentVersion: '4.0.11',
latestVersion: '4.1.0',
includeCurrent: true,
})
assert.deepEqual(entries.map((entry) => entry.version), ['4.1.0'])
})
test('更新日志:面板展示在本机高于线上(灰度/回滚)时仍不列条目', () => {
assert.deepEqual(
selectChangelogEntries({
entries: FIXTURE,
currentVersion: '4.1.0',
latestVersion: '4.0.11',
includeCurrent: true,
}),
[],
)
})
test('更新日志:面板展示在本机版本未被收录时不倒推旧条目', () => {
assert.deepEqual(
selectChangelogEntries({
entries: FIXTURE,
currentVersion: '4.0.10',
latestVersion: '4.0.10',
includeCurrent: true,
}),
[],
)
})
test('更新日志:本机版本高于线上(灰度/回滚)不列条目', () => {
assert.deepEqual(
selectChangelogEntries({ entries: FIXTURE, currentVersion: '4.1.0', latestVersion: '4.0.11' }),
@@ -104,3 +149,23 @@ test('更新日志:版本号前缀 v 不影响筛选', () => {
const entries = selectChangelogEntries({ entries: FIXTURE, currentVersion: 'v4.0.4', latestVersion: 'v4.0.11' })
assert.deepEqual(entries.map((entry) => entry.version), ['4.0.11', '4.0.9'])
})
test('指定版本日志:取选中版本自身的条目(升级/回退/同版统一语义)', () => {
assert.deepEqual(
selectVersionEntry('4.0.9', FIXTURE).map((entry) => entry.version),
['4.0.9'],
'回退到旧版本时也要能看到该版本的更新说明',
)
assert.deepEqual(selectVersionEntry('4.1.0', FIXTURE).map((entry) => entry.version), ['4.1.0'])
})
test('指定版本日志:v 前缀与版本号为空', () => {
assert.deepEqual(selectVersionEntry('v4.0.11', FIXTURE).map((entry) => entry.version), ['4.0.11'])
assert.deepEqual(selectVersionEntry('', FIXTURE), [])
assert.deepEqual(selectVersionEntry('v', FIXTURE), [])
})
test('指定版本日志:未收录的版本不倒推相邻条目', () => {
assert.deepEqual(selectVersionEntry('4.0.10', FIXTURE), [], '4.0.10 未收录,不能拿 4.0.9 的说明顶替')
assert.deepEqual(selectVersionEntry('4.2.0', FIXTURE), [])
})