Files
order_site/apps/backend/src/services/realtime/realtime-replay.test.ts
T

23 lines
992 B
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { shouldReplayRealtimeEvents } from './realtime-event-service.js'
/**
* 回归:整页刷新后大厅列表重复、可抢订单数越刷越多。
*
* 根因是新连接(lastEventId=0)也会补发最近 500 条历史事件。大厅 upsert 广播带的是
* 当时的工单快照,被重新打进刚加载的列表后,已抢走/已出队的订单会复活并被插到第 1 页,
* 前端还会按「插入行」把 pagination.total 加一。
*/
test('新连接(lastEventId=0)不补发历史事件,避免旧大厅快照复活订单', () => {
assert.equal(shouldReplayRealtimeEvents(0), false)
assert.equal(shouldReplayRealtimeEvents(Number.NaN), false)
assert.equal(shouldReplayRealtimeEvents(-1), false)
})
test('断线重连(带 Last-Event-ID)才补发事件', () => {
assert.equal(shouldReplayRealtimeEvents(1), true)
assert.equal(shouldReplayRealtimeEvents(3993659), true)
})