fix(ota): settle stale firmware update states

This commit is contained in:
stu2not
2026-09-22 10:35:37 +08:00
parent 5e163c4bb7
commit 2467656806
6 changed files with 240 additions and 10 deletions
@@ -99,6 +99,39 @@ test('a failed update with a newer version still offers a retry', () => {
assert.equal(firmwareProgressView(pending).failed, true)
})
test('an active update whose target version is already installed is settled', () => {
const settled = {
...currentFirmware,
current_version: '1.8.3',
latest_version: '1.8.4',
target_version: '1.8.3',
update_available: true,
can_update: true,
update_status: 'accepted',
progress: 0,
}
assert.deepEqual(firmwareSummaryView(settled), { action: '更新', subtitle: '发现可更新版本' })
const view = firmwareProgressView(settled)
assert.equal(view.complete, true)
assert.equal(view.progress, 100)
assert.match(view.message, /已完成更新/)
})
test('an active update below its target stays in progress even at 100 percent', () => {
const pending = {
...currentFirmware,
current_version: '1.8.2',
target_version: '1.8.3',
latest_version: '1.8.4',
update_available: true,
can_update: true,
update_status: 'updating',
progress: 100,
}
assert.deepEqual(firmwareSummaryView(pending), { action: '查看进度', subtitle: '设备正在更新,请稍候' })
assert.equal(firmwareProgressView(pending).complete, false)
})
test('missing or placeholder versions never claim the device is up to date', () => {
const cases = [null, ...['', 'unknown', '0.0.0', '--', 'updating'].flatMap(value => [
{ ...currentFirmware, current_version: value }, { ...currentFirmware, latest_version: value },