fix(worker-platform): 拼单取消后可重入,大厅置顶始终优先
This commit is contained in:
@@ -140,6 +140,84 @@ test('无限下拉:只有第 1 页允许插入,其余页只就地更新', ()
|
||||
assert.equal(itemsOf(patched.pages[1]).length, 2, '第 2 页不得插入')
|
||||
})
|
||||
|
||||
test('大厅新单插入后,置顶单必须仍在最前方', () => {
|
||||
const current = {
|
||||
pages: [
|
||||
buildEnvelope([
|
||||
buildRow({ workOrderId: 100, status: 'open', pinnedAt: '2026-10-25T10:00:00+08:00' }),
|
||||
buildRow({ workOrderId: 200, status: 'open' }),
|
||||
]),
|
||||
],
|
||||
pageParams: [1],
|
||||
}
|
||||
const patched = patchWorkerWorkOrderInfiniteEnvelope(
|
||||
current,
|
||||
{ operation: 'upsert', data: buildRow({ workOrderId: 300, status: 'open' }) },
|
||||
true,
|
||||
) as { pages: unknown[] }
|
||||
assert.deepEqual(
|
||||
itemsOf(patched.pages[0]).map((item) => item.workOrderId),
|
||||
[100, 300, 200],
|
||||
'新单必须排在置顶单之后,未置顶部分仍按 id 倒序',
|
||||
)
|
||||
})
|
||||
|
||||
test('多个置顶单之间按置顶时间倒序,且都排在普通单之前', () => {
|
||||
const current = {
|
||||
pages: [
|
||||
buildEnvelope([
|
||||
buildRow({ workOrderId: 100, status: 'open', pinnedAt: '2026-10-25T09:00:00+08:00' }),
|
||||
buildRow({ workOrderId: 200, status: 'open' }),
|
||||
buildRow({ workOrderId: 300, status: 'open', pinnedAt: '2026-10-25T11:00:00+08:00' }),
|
||||
]),
|
||||
],
|
||||
pageParams: [1],
|
||||
}
|
||||
const patched = patchWorkerWorkOrderInfiniteEnvelope(
|
||||
current,
|
||||
{ operation: 'upsert', data: buildRow({ workOrderId: 400, status: 'open' }) },
|
||||
true,
|
||||
) as { pages: unknown[] }
|
||||
assert.deepEqual(
|
||||
itemsOf(patched.pages[0]).map((item) => item.workOrderId),
|
||||
[300, 100, 400, 200],
|
||||
)
|
||||
})
|
||||
|
||||
test('第 2 页的工单被置顶后必须提到第 1 页最前', () => {
|
||||
const current = {
|
||||
pages: [
|
||||
buildEnvelope([
|
||||
buildRow({ workOrderId: 300, status: 'open' }),
|
||||
buildRow({ workOrderId: 299, status: 'open' }),
|
||||
]),
|
||||
buildEnvelope([buildRow({ workOrderId: 100, status: 'open' })]),
|
||||
],
|
||||
pageParams: [1, 2],
|
||||
}
|
||||
const patched = patchWorkerWorkOrderInfiniteEnvelope(
|
||||
current,
|
||||
{
|
||||
operation: 'upsert',
|
||||
data: buildRow({
|
||||
workOrderId: 100,
|
||||
status: 'open',
|
||||
pinnedAt: '2026-10-25T12:00:00+08:00',
|
||||
}),
|
||||
},
|
||||
false,
|
||||
) as { pages: unknown[] }
|
||||
assert.deepEqual(
|
||||
itemsOf(patched.pages[0]).map((item) => item.workOrderId),
|
||||
[100, 300],
|
||||
'置顶单要在第 1 页最前,被顶下去的普通单顺延到第 2 页',
|
||||
)
|
||||
assert.deepEqual(
|
||||
itemsOf(patched.pages[1]).map((item) => item.workOrderId),
|
||||
[299],
|
||||
)
|
||||
})
|
||||
|
||||
/**
|
||||
* 「我的订单」状态页签的实时删行判定。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user