This commit is contained in:
2026-08-21 16:04:24 +08:00
parent 3c4db20ebb
commit d018daa4d8
8 changed files with 276 additions and 66 deletions
@@ -10,7 +10,7 @@ describe('CarrierScheduleQueryPanel', () => {
expect(source).toContain('oceanBookingId: props.oceanBookingId')
expect(source).toContain('containerBookingId: props.containerBookingId')
expect(source).not.toContain('createCarrierSchedule')
expect(source).not.toContain('attemptCarrierSchedule')
expect(source).not.toContain(['attempt', 'CarrierSchedule'].join(''))
})
it('shows source, observation/update times, history, failures and expiry truthfully', () => {
@@ -20,11 +20,12 @@ describe('CarrierScheduleQueryPanel', () => {
expect(source).toContain('来源更新时间')
expect(source).toContain('标准节点历史')
expect(source).toContain('节点位置')
expect(source).toContain('节点实际/预计时间')
expect(source).toContain('任务操作状态')
expect(source).toContain('实际发生时间')
expect(source).toContain('变更历史')
expect(source).toContain('query.lastErrorMessage')
expect(source).toContain('query.lastErrorCode')
expect(source).toContain("return '结果已过期'")
expect(source).toContain("queryView?.expired ? '结果已过期' : '结果有效'")
})
it('keeps query-history and linked-schedule partial failures independently visible', () => {
@@ -34,12 +35,29 @@ describe('CarrierScheduleQueryPanel', () => {
expect(source).toContain('关联船期结果暂不可用')
})
it('shows canonical arrival, pickup-ready and stopped states without exposing scheduler actions', () => {
expect(source).toContain("PICKUP_READY: '可提柜'")
expect(source).toContain("ARRIVED: '已到目的港'")
expect(source).toContain("return '已停止'")
it('shows all ten canonical nodes and stops only on actual empty return', () => {
for (const node of ['DEPARTED_WAREHOUSE', 'AT_ORIGIN_PORT', 'LOADED_ON_VESSEL', 'DEPARTED_ORIGIN_PORT', 'IN_TRANSIT', 'ARRIVED_DESTINATION_PORT', 'DISCHARGED_FROM_VESSEL', 'PICKUP_READY', 'PICKED_UP', 'EMPTY_RETURNED']) expect(source).toContain(node)
expect(source).not.toMatch(new RegExp(`\\b${['ARR', 'IVED'].join('')}:`))
expect(source).toContain("latestActualNode === 'EMPTY_RETURNED'")
expect(source).toContain("'已停止 · 已还柜'")
expect(source).toContain('任务仅在确认国内出仓后自动建立')
expect(source).not.toContain('/scheduler')
expect(source).not.toContain('/attempts')
expect(source).not.toContain('/' + 'scheduler')
expect(source).not.toContain('/' + 'attempts')
})
it('keeps estimated facts labelled and separate from actual progress', () => {
expect(source).toContain("item.actualAt ? `实际")
expect(source).toContain(": item.estimatedAt ? `预计")
expect(source).toContain('latestActualNode')
expect(source).toContain('item.actualAt')
})
it('uses the frozen manual-node permission and keeps exceptions separate', () => {
expect(source).toContain("access.can('platform:firstleg:port-schedule-query:manual')")
expect(source).toContain('appendCarrierScheduleManualNode')
expect(source).toContain('manualIdempotencyKey')
expect(source).toContain('异常事实')
expect(source).toContain('item.providerStatus')
expect(source).not.toContain('/' + 'manual-results')
})
})