forked from erp-dev/erp
feat: shipment change && version modelize
This commit is contained in:
@@ -2430,6 +2430,79 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertEqual(data["results"][0]["id"], self.shipment1.id)
|
||||
self.assertEqual(data["results"][0]["delivery_id"], delivery.id)
|
||||
|
||||
def test_list_shipments_supports_shipment_stage_filter_and_fields(self):
|
||||
self.shipment1.address = ""
|
||||
self.shipment1.save(update_fields=["address", "updated_at"])
|
||||
|
||||
deliverable = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant1,
|
||||
customer=self.customer1,
|
||||
shipment_date="2026-01-20",
|
||||
created_by=self.user1,
|
||||
address="绍兴市测试路 8 号",
|
||||
)
|
||||
scheduled_delivery = shipment_models.ShipmentDelivery.objects.create(
|
||||
merchant=self.merchant1,
|
||||
driver_name="排车司机",
|
||||
vehicle_trip="STAGE-SCHEDULED",
|
||||
status=shipment_models.ShipmentDeliveryStatus.PENDING,
|
||||
created_by=self.user1,
|
||||
)
|
||||
scheduled = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant1,
|
||||
customer=self.customer1,
|
||||
shipment_date="2026-01-21",
|
||||
created_by=self.user1,
|
||||
address="已排车地址",
|
||||
delivery=scheduled_delivery,
|
||||
)
|
||||
delivered_delivery = shipment_models.ShipmentDelivery.objects.create(
|
||||
merchant=self.merchant1,
|
||||
driver_name="送达司机",
|
||||
vehicle_trip="STAGE-DELIVERED",
|
||||
status=shipment_models.ShipmentDeliveryStatus.DELIVERED,
|
||||
created_by=self.user1,
|
||||
)
|
||||
delivered = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant1,
|
||||
customer=self.customer1,
|
||||
shipment_date="2026-01-22",
|
||||
created_by=self.user1,
|
||||
address="已送达地址",
|
||||
delivery=delivered_delivery,
|
||||
)
|
||||
cancelled = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant1,
|
||||
customer=self.customer1,
|
||||
shipment_date="2026-01-23",
|
||||
created_by=self.user1,
|
||||
address="取消地址",
|
||||
status=shipment_models.ShipmentStatus.CANCELLED,
|
||||
)
|
||||
|
||||
cases = [
|
||||
("missing_address", self.shipment1.id, "待补地址"),
|
||||
("deliverable", deliverable.id, "可送货"),
|
||||
("scheduled", scheduled.id, "已排车"),
|
||||
("delivered", delivered.id, "已送达"),
|
||||
("cancelled", cancelled.id, "已取消"),
|
||||
]
|
||||
for stage, expected_id, expected_display in cases:
|
||||
with self.subTest(stage=stage):
|
||||
resp = self.client.get(f"/api/v1/shipment/shipments/?shipment_stage={stage}&limit=1")
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
data = resp.json()
|
||||
self.assertEqual(data["count"], 1)
|
||||
self.assertEqual(data["results"][0]["id"], expected_id)
|
||||
self.assertEqual(data["results"][0]["shipment_stage"], stage)
|
||||
self.assertEqual(data["results"][0]["shipment_stage_display"], expected_display)
|
||||
|
||||
def test_list_shipments_rejects_invalid_shipment_stage(self):
|
||||
resp = self.client.get("/api/v1/shipment/shipments/?shipment_stage=unknown")
|
||||
|
||||
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("shipment_stage", resp.json())
|
||||
|
||||
def test_retrieve_shipment_success(self):
|
||||
resp = self.client.get(f"/api/v1/shipment/shipments/{self.shipment1.id}/")
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
|
||||
Reference in New Issue
Block a user