Skip to content

Commit 4156002

Browse files
Fixed order life cycle test
1 parent 8bc9a5c commit 4156002

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

nxtbn/order/api/dashboard/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ def validate(self, attrs):
213213
raise serializers.ValidationError(_("Order is already shipped or delivered."))
214214
if current_status == OrderStatus.RETURNED:
215215
raise serializers.ValidationError(_("Returned orders cannot be re-shipped."))
216+
if current_status != OrderStatus.PACKED:
217+
raise serializers.ValidationError(_("Order must be packed before it can be shipped."))
216218

217219
if new_status == OrderStatus.DELIVERED:
218220
if current_status == OrderStatus.CANCELLED:

nxtbn/order/tests/test_order_reservation_cancel_shipped_merge_return_sc.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,11 @@ def test_order_back_order_allowed(self):
251251
# Now Ship the successfull order
252252
order_status_update_url = reverse('order-status-update', args=[order_out_of_stock_response_with_stock_tracking_bo.data['order_alias']])
253253
approve = self.auth_client.patch(order_status_update_url, {"status": OrderStatus.APPROVED}, format='json')
254-
processing = self.auth_client.patch(order_status_update_url, {"status": OrderStatus.PACKED}, format='json')
254+
packed = self.auth_client.patch(order_status_update_url, {"status": OrderStatus.PACKED}, format='json')
255255
shipped = self.auth_client.patch(order_status_update_url, {"status": OrderStatus.SHIPPED}, format='json')
256256

257257
self.assertEqual(approve.status_code, status.HTTP_200_OK)
258-
self.assertEqual(processing.status_code, status.HTTP_200_OK)
258+
self.assertEqual(packed.status_code, status.HTTP_400_BAD_REQUEST) # as order is not reserved, mean is not in stock, so packing should not be allowed
259259

260260
self.assertEqual(shipped.status_code, status.HTTP_400_BAD_REQUEST) # as order is not reserved, it should not be shipped
261261

@@ -288,6 +288,10 @@ def test_order_back_order_allowed(self):
288288
self.assertEqual(remained_stock_without_bo, 15)
289289
self.assertEqual(reserved_stock_without_bo, 8)
290290

291+
# now pack
292+
packed = self.auth_client.patch(order_status_update_url, {"status": OrderStatus.PACKED}, format='json')
293+
self.assertEqual(packed.status_code, status.HTTP_200_OK) # as order is reserved, it should be packed
294+
291295
# as enough stock is available and order is reserved, now ship the order
292296
shipped = self.auth_client.put(order_status_update_url, {"status": OrderStatus.SHIPPED}, format='json')
293297
self.assertEqual(shipped.status_code, status.HTTP_200_OK)

0 commit comments

Comments
 (0)