feat(approval): add task workflow and waiver decisions
This commit is contained in:
67
web/tests/approval-task-retry-and-route.test.mjs
Normal file
67
web/tests/approval-task-retry-and-route.test.mjs
Normal file
@@ -0,0 +1,67 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
import {
|
||||
resolveApprovalTaskRetryKey
|
||||
} from '../src/views/scripts/approvalTaskRetry.js'
|
||||
import {
|
||||
appendApprovalTaskRouteQuery,
|
||||
readApprovalTaskRouteState
|
||||
} from '../src/views/scripts/approvalTaskRouteState.js'
|
||||
|
||||
test('approval retry key is stable only while the idempotent payload stays identical', () => {
|
||||
const first = resolveApprovalTaskRetryKey({
|
||||
action: 'approve',
|
||||
scopeId: 'task-1',
|
||||
payload: { reason: '核对通过', expectedTaskVersion: 3 }
|
||||
})
|
||||
const samePayload = resolveApprovalTaskRetryKey({
|
||||
action: 'approve',
|
||||
scopeId: 'task-1',
|
||||
payload: { expectedTaskVersion: 3, reason: '核对通过' },
|
||||
previousFingerprint: first.fingerprint,
|
||||
previousRequestId: first.requestId
|
||||
})
|
||||
const editedPayload = resolveApprovalTaskRetryKey({
|
||||
action: 'approve',
|
||||
scopeId: 'task-1',
|
||||
payload: { expectedTaskVersion: 3, reason: '补充核对后通过' },
|
||||
previousFingerprint: first.fingerprint,
|
||||
previousRequestId: first.requestId
|
||||
})
|
||||
|
||||
assert.equal(samePayload.requestId, first.requestId)
|
||||
assert.notEqual(editedPayload.requestId, first.requestId)
|
||||
})
|
||||
|
||||
test('approval task route state restores only supported filters and compact defaults', () => {
|
||||
const state = readApprovalTaskRouteState({
|
||||
dc_review_page: '3',
|
||||
dc_review_page_size: '10',
|
||||
dc_review_q: ' REIM-100 ',
|
||||
dc_review_risk: 'high',
|
||||
dc_review_sla: 'overdue'
|
||||
})
|
||||
assert.deepEqual(state, {
|
||||
page: 3,
|
||||
pageSize: 10,
|
||||
filters: { keyword: 'REIM-100', riskLevel: 'high', slaState: 'overdue' }
|
||||
})
|
||||
assert.deepEqual(appendApprovalTaskRouteQuery({}, state), {
|
||||
dc_review_page: '3',
|
||||
dc_review_page_size: '10',
|
||||
dc_review_q: 'REIM-100',
|
||||
dc_review_risk: 'high',
|
||||
dc_review_sla: 'overdue'
|
||||
})
|
||||
assert.deepEqual(readApprovalTaskRouteState({
|
||||
dc_review_page: '-1',
|
||||
dc_review_page_size: '200',
|
||||
dc_review_risk: 'unknown',
|
||||
dc_review_sla: 'near_due'
|
||||
}), {
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
filters: { keyword: '', riskLevel: '', slaState: '' }
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user