1
0
forked from erp-dev/erp

feat: added area field into shipments model

This commit is contained in:
2026-01-16 17:58:17 +08:00
parent 2e0b7dc335
commit c73014f69c
7 changed files with 123 additions and 1 deletions

View File

@@ -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 字段)。