forked from erp-dev/erp
feat: added area field into shipments model
This commit is contained in:
@@ -348,6 +348,7 @@ class ShipmentCreateAPITestCase(TestCase):
|
||||
data = {
|
||||
'customer': self.customer.id,
|
||||
'shipment_date': '2026-01-14',
|
||||
'area': '华东',
|
||||
'remark': '测试备注',
|
||||
'sales_items': [self.sales_item1.id, self.sales_item2.id]
|
||||
}
|
||||
@@ -362,6 +363,7 @@ class ShipmentCreateAPITestCase(TestCase):
|
||||
self.assertEqual(result['customer'], self.customer.id)
|
||||
self.assertEqual(result['customer_name'], self.customer.name)
|
||||
self.assertEqual(result['shipment_date'], '2026-01-14')
|
||||
self.assertEqual(result.get('area', ''), '华东')
|
||||
self.assertEqual(result['remark'], '测试备注')
|
||||
self.assertEqual(result['items_count'], 2)
|
||||
self.assertEqual(result['created_by_id'], self.user.id)
|
||||
@@ -488,6 +490,7 @@ class ShipmentExternalCreateAPITestCase(TestCase):
|
||||
data = {
|
||||
'customer': self.customer.id,
|
||||
'shipment_date': '2026-01-14',
|
||||
'area': '华南',
|
||||
'remark': 'external 备注',
|
||||
'external_id': 'EXT-ORDER-001',
|
||||
'external_finished_products': [
|
||||
@@ -502,6 +505,7 @@ class ShipmentExternalCreateAPITestCase(TestCase):
|
||||
|
||||
self.assertEqual(result['customer'], self.customer.id)
|
||||
self.assertEqual(result['external_id'], 'EXT-ORDER-001')
|
||||
self.assertEqual(result.get('area', ''), '华南')
|
||||
self.assertEqual(result['items_count'], 0)
|
||||
self.assertEqual(result['external_finished_products_count'], 2)
|
||||
|
||||
@@ -618,6 +622,7 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
shipment_date='2026-01-15',
|
||||
created_by=self.user1,
|
||||
remark='s1',
|
||||
area='A1',
|
||||
)
|
||||
self.shipment2 = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant2,
|
||||
@@ -625,6 +630,7 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
shipment_date='2026-01-15',
|
||||
created_by=self.user2,
|
||||
remark='s2',
|
||||
area='B1',
|
||||
)
|
||||
|
||||
self.client.force_authenticate(user=self.user1)
|
||||
@@ -643,6 +649,8 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
|
||||
# 关键:列表序列化器必须稳定输出明细数组字段(即使为空)
|
||||
item = next(it for it in data['results'] if it['id'] == self.shipment1.id)
|
||||
self.assertIn('area', item)
|
||||
self.assertEqual(item['area'], 'A1')
|
||||
self.assertIn('sales_items', item)
|
||||
self.assertIsInstance(item['sales_items'], list)
|
||||
self.assertIn('external_finished_products', item)
|
||||
@@ -653,11 +661,30 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
result = resp.json()
|
||||
self.assertEqual(result['id'], self.shipment1.id)
|
||||
self.assertIn('area', result)
|
||||
self.assertEqual(result['area'], 'A1')
|
||||
self.assertIn('sales_items', result)
|
||||
self.assertIsInstance(result['sales_items'], list)
|
||||
self.assertIn('external_finished_products', result)
|
||||
self.assertIsInstance(result['external_finished_products'], list)
|
||||
|
||||
def test_patch_shipment_area_success(self):
|
||||
"""
|
||||
新增字段 area:支持更新(PATCH)并回显。
|
||||
"""
|
||||
resp = self.client.patch(
|
||||
f'/api/v1/shipment/shipments/{self.shipment1.id}/',
|
||||
data={'area': '更新地区'},
|
||||
format='json'
|
||||
)
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
result = resp.json()
|
||||
self.assertEqual(result['id'], self.shipment1.id)
|
||||
self.assertEqual(result.get('area', ''), '更新地区')
|
||||
|
||||
self.shipment1.refresh_from_db()
|
||||
self.assertEqual(getattr(self.shipment1, 'area', ''), '更新地区')
|
||||
|
||||
def test_list_shipments_includes_external_finished_product_remark(self):
|
||||
"""
|
||||
Shipments list 需要附带 external_finished_products 明细数据(包含 remark 字段)。
|
||||
|
||||
Reference in New Issue
Block a user