Files
order_site/apps/backend/src/domain/task-status.test.ts
T

38 lines
1.4 KiB
TypeScript

import test from 'node:test'
import assert from 'node:assert/strict'
import {
TASK_STATUS,
canRedeemKuaishouCloudClaimStatus,
canTaskTransition,
isClaimInactiveTaskStatus,
isOpen91FailedTaskStatus,
shouldEnsureKuaishouCloudClaimLink,
} from './task-status.js'
test('任务状态机声明 kuaishou-lewan 主流程跳转', () => {
assert.equal(
canTaskTransition(TASK_STATUS.PENDING_BINDING_PREPARE, TASK_STATUS.WAITING_BINDING),
true,
)
assert.equal(canTaskTransition(TASK_STATUS.WAITING_BINDING, TASK_STATUS.ROLE_CONFIRMED), true)
assert.equal(canTaskTransition(TASK_STATUS.ROLE_CONFIRMED, TASK_STATUS.REDEEMING), true)
assert.equal(
canTaskTransition(TASK_STATUS.REDEEMING, TASK_STATUS.DISPATCHED_PENDING_RETURN),
true,
)
assert.equal(
canTaskTransition(TASK_STATUS.DISPATCHED_PENDING_RETURN, TASK_STATUS.COMPLETED),
true,
)
})
test('任务状态机收敛领取和 91 查询的业务判断', () => {
assert.equal(shouldEnsureKuaishouCloudClaimLink(TASK_STATUS.PENDING_BINDING_PREPARE), true)
assert.equal(canRedeemKuaishouCloudClaimStatus(TASK_STATUS.ROLE_CONFIRMED), true)
assert.equal(canRedeemKuaishouCloudClaimStatus(TASK_STATUS.WAITING_BINDING), true)
assert.equal(canRedeemKuaishouCloudClaimStatus(TASK_STATUS.LINK_GENERATED), false)
assert.equal(isClaimInactiveTaskStatus(TASK_STATUS.MANUAL_REVIEW), true)
assert.equal(isOpen91FailedTaskStatus(TASK_STATUS.CLOSED), true)
})