JewelryMall/miniprogram/utils/orderDisplay.test.ts
2026-02-14 19:29:15 +08:00

43 lines
1.4 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import * as fc from 'fast-check'
import { getOrderDisplayFields } from './orderDisplay'
import type { OrderStatus } from '../types'
const orderStatusArb: fc.Arbitrary<OrderStatus> = fc.constantFrom(
'pending' as const,
'paid' as const,
'shipped' as const,
'cancelled' as const,
)
// Feature: jewelry-mall, Property 3: 订单状态与展示字段匹配
// **Validates: Requirements 3.5, 3.6**
describe('Property 3: 订单状态与展示字段匹配', () => {
it('已支付状态应展示支付时间,已发货状态应展示物流信息', () => {
fc.assert(
fc.property(orderStatusArb, (status) => {
const fields = getOrderDisplayFields(status)
// Requirements 3.5: 已支付时展示支付时间
if (status === 'paid') {
expect(fields.showPaymentTime).toBe(true)
expect(fields.showShippingInfo).toBe(false)
}
// Requirements 3.6: 已发货时展示物流信息(且也展示支付时间)
if (status === 'shipped') {
expect(fields.showPaymentTime).toBe(true)
expect(fields.showShippingInfo).toBe(true)
}
// 待支付和已取消不展示支付时间和物流信息
if (status === 'pending' || status === 'cancelled') {
expect(fields.showPaymentTime).toBe(false)
expect(fields.showShippingInfo).toBe(false)
}
}),
{ numRuns: 100 },
)
})
})