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 = 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 }, ) }) })