feat(F-125): completed feature
This commit is contained in:
@@ -51,9 +51,9 @@ export const ALLOWED_TRANSITIONS: Readonly<Record<OrderState, ReadonlyArray<Orde
|
||||
PENDING: ['AWAITING_PAYMENT', 'CANCELLED'],
|
||||
AWAITING_PAYMENT: ['PAID', 'CANCELLED'],
|
||||
PAID: ['PROCESSING', 'SHIPPED', 'CANCELLED', 'REFUNDED'],
|
||||
PROCESSING: ['SHIPPED', 'CANCELLED', 'REFUNDED'],
|
||||
SHIPPED: ['DELIVERED', 'PARTIALLY_REFUNDED'],
|
||||
DELIVERED: ['PARTIALLY_REFUNDED'],
|
||||
PROCESSING: ['PAID', 'SHIPPED', 'CANCELLED', 'REFUNDED'],
|
||||
SHIPPED: ['PROCESSING', 'DELIVERED', 'PARTIALLY_REFUNDED'],
|
||||
DELIVERED: ['SHIPPED', 'PARTIALLY_REFUNDED'],
|
||||
CANCELLED: [],
|
||||
REFUNDED: [],
|
||||
PARTIALLY_REFUNDED: [],
|
||||
|
||||
@@ -17,7 +17,7 @@ describe('Order state machine', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('rejects SHIPPED back to PENDING', () => {
|
||||
it('rejects SHIPPED back to PENDING (too far)', () => {
|
||||
expect(isTransitionAllowed('SHIPPED', 'PENDING')).toBe(false);
|
||||
expect(() => {
|
||||
if (!isTransitionAllowed('SHIPPED', 'PENDING'))
|
||||
@@ -25,6 +25,12 @@ describe('Order state machine', () => {
|
||||
}).toThrow(OrderStateTransitionError);
|
||||
});
|
||||
|
||||
it('allows one-step backward transitions (F-125)', () => {
|
||||
expect(isTransitionAllowed('PROCESSING', 'PAID')).toBe(true);
|
||||
expect(isTransitionAllowed('SHIPPED', 'PROCESSING')).toBe(true);
|
||||
expect(isTransitionAllowed('DELIVERED', 'SHIPPED')).toBe(true);
|
||||
});
|
||||
|
||||
it('keeps REFUNDED and PARTIALLY_REFUNDED terminal', () => {
|
||||
expect(ALLOWED_TRANSITIONS.REFUNDED).toEqual([]);
|
||||
expect(ALLOWED_TRANSITIONS.PARTIALLY_REFUNDED).toEqual([]);
|
||||
|
||||
Reference in New Issue
Block a user