fix(client): preserve order category counts while refreshing
This commit is contained in:
@@ -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)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user