feat(F-125): completed feature

This commit is contained in:
chattie
2026-08-21 17:58:15 +02:00
parent 50229c5ce4
commit 6cc91a3902
12 changed files with 282 additions and 28 deletions

View File

@@ -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: [],

View File

@@ -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([]);