fix(client): preserve order category counts while refreshing

This commit is contained in:
2026-10-09 17:53:42 +08:00
parent 33d86d2a64
commit 639b1ae22c
4 changed files with 52 additions and 1 deletions
@@ -131,3 +131,40 @@ test('retains server progress and rejects missing or foreign progress without in
response = result(); delete response.queues.cleared
await h.store.load(); assert.match(h.store.loadError, /分页数据不完整/)
})
test('category counts remain visible throughout refresh and update together after the response is validated', async t => {
const pending = deferred()
let refreshing = false
const h = harness(t, () => refreshing ? pending.promise : result())
await h.store.load()
const counts = h.store.queueCounts
refreshing = true
const request = h.store.load({ queue: 'fee' })
assert.equal(h.store.loading, true)
assert.equal(h.store.queueCounts, counts)
assert.equal(h.store.queueCounts.fee, 2)
const updated = result(1, 10, 3)
updated.queues = { ...updated.queues, all: 216, fee: 3 }
pending.resolve(updated)
await request
assert.equal(h.store.queueCounts.all, 216)
assert.equal(h.store.queueCounts.fee, 3)
assert.equal(h.store.loading, false)
})
test('rapid category switches preserve counts and ignore an older response while the newest request is pending', async t => {
const older = deferred(), latest = deferred()
const h = harness(t, q => q.queue === 'fee' ? older.promise : q.queue === 'customs' ? latest.promise : result())
await h.store.load()
const oldRequest = h.store.load({ queue: 'fee' })
const newRequest = h.store.load({ queue: 'customs' })
const oldResult = result(1, 10, 2); oldResult.queues.all = 999
older.resolve(oldResult); await oldRequest
assert.equal(h.store.queueCounts.all, 215)
assert.equal(h.store.loading, true)
const newResult = result(1, 10, 1); newResult.queues.all = 216
latest.resolve(newResult); await newRequest
assert.equal(h.store.queueCounts.all, 216)
assert.equal(h.store.total, 1)
})