forked from erp-dev/erp
feat: added new api for query batch_advance_records
This commit is contained in:
138
api_v2/tests.py
138
api_v2/tests.py
@@ -1516,3 +1516,141 @@ class MyVisiblePagesAPITest(TestCase):
|
||||
self.client.logout()
|
||||
response = self.client.get('/api/v2/me/visible-pages/')
|
||||
self.assertEqual(response.status_code, 401)
|
||||
|
||||
|
||||
class PrintingOrderBatchAdvanceRecordsAPITest(TestCase):
|
||||
"""测试印染订单批量推进记录查询 API"""
|
||||
|
||||
def setUp(self):
|
||||
self.client = APIClient()
|
||||
self.merchant = basic_models.Merchant.objects.create(
|
||||
name='测试商户',
|
||||
type=basic_models.MerchantTypeEnum.FACTORY,
|
||||
)
|
||||
self.user = get_user_model().objects.create_user(username='testuser', password='pass12345')
|
||||
self.client.force_authenticate(user=self.user)
|
||||
|
||||
# 创建客户
|
||||
self.customer = basic_models.Customer.objects.create(
|
||||
merchant=self.merchant,
|
||||
name='测试客户'
|
||||
)
|
||||
|
||||
# 创建产品类别和产品
|
||||
self.category = basic_models.ProductCategory.objects.create(
|
||||
merchant=self.merchant,
|
||||
name='测试类别'
|
||||
)
|
||||
self.product = basic_models.Product.objects.create(
|
||||
merchant=self.merchant,
|
||||
name='测试产品',
|
||||
category=self.category,
|
||||
unit=basic_models.ProductUnitEnum.METER
|
||||
)
|
||||
|
||||
# 创建印染订单
|
||||
self.printing_order = printing_models.PrintingOrder.objects.create(
|
||||
customer=self.customer,
|
||||
fabric='测试面料',
|
||||
width='150cm'
|
||||
)
|
||||
|
||||
# 创建印染明细
|
||||
self.job1 = printing_models.PrintingJob.objects.create(
|
||||
printing_order=self.printing_order,
|
||||
product=self.product,
|
||||
quantity=100,
|
||||
unit='米'
|
||||
)
|
||||
self.job2 = printing_models.PrintingJob.objects.create(
|
||||
printing_order=self.printing_order,
|
||||
product=self.product,
|
||||
quantity=200,
|
||||
unit='米'
|
||||
)
|
||||
|
||||
# 创建流程状态
|
||||
self.state = stateflow_models.State.objects.create(
|
||||
name='染色',
|
||||
description='染色工序'
|
||||
)
|
||||
|
||||
# 创建批量推进记录
|
||||
self.record = printing_models.PrintingJobBatchAdvanceRecord.objects.create(
|
||||
printing_order=self.printing_order,
|
||||
state=self.state,
|
||||
created_by=self.user,
|
||||
parameters={'temperature': '25.5', 'operator': '张三'}
|
||||
)
|
||||
self.record.printing_jobs.add(self.job1, self.job2)
|
||||
|
||||
def test_get_batch_advance_records_success(self):
|
||||
"""测试成功获取批量推进记录"""
|
||||
response = self.client.get(f'/api/v2/printing-orders/{self.printing_order.id}/batch-advance-records/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
data = response.data
|
||||
self.assertEqual(data['printing_order_id'], self.printing_order.id)
|
||||
self.assertEqual(data['total_count'], 1)
|
||||
self.assertEqual(len(data['records']), 1)
|
||||
|
||||
record = data['records'][0]
|
||||
self.assertEqual(record['id'], self.record.id)
|
||||
self.assertEqual(record['state_id'], self.state.id)
|
||||
self.assertEqual(record['state_name'], '染色')
|
||||
self.assertEqual(record['created_by'], self.user.id)
|
||||
self.assertEqual(record['created_by_username'], 'testuser')
|
||||
self.assertEqual(record['parameters'], {'temperature': '25.5', 'operator': '张三'})
|
||||
self.assertEqual(record['printing_job_count'], 2)
|
||||
self.assertIn(self.job1.id, record['printing_job_ids'])
|
||||
self.assertIn(self.job2.id, record['printing_job_ids'])
|
||||
|
||||
def test_get_batch_advance_records_empty(self):
|
||||
"""测试没有批量推进记录时返回空列表"""
|
||||
# 创建另一个没有记录的订单
|
||||
another_order = printing_models.PrintingOrder.objects.create(
|
||||
customer=self.customer,
|
||||
fabric='测试面料2',
|
||||
width='160cm'
|
||||
)
|
||||
|
||||
response = self.client.get(f'/api/v2/printing-orders/{another_order.id}/batch-advance-records/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
data = response.data
|
||||
self.assertEqual(data['printing_order_id'], another_order.id)
|
||||
self.assertEqual(data['total_count'], 0)
|
||||
self.assertEqual(data['records'], [])
|
||||
|
||||
def test_get_batch_advance_records_order_not_found(self):
|
||||
"""测试订单不存在时返回 404"""
|
||||
response = self.client.get('/api/v2/printing-orders/99999/batch-advance-records/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertIn('error', response.data)
|
||||
|
||||
def test_get_batch_advance_records_multiple_records(self):
|
||||
"""测试多条批量推进记录按时间倒序返回"""
|
||||
# 创建第二条记录
|
||||
state2 = stateflow_models.State.objects.create(name='整理', description='整理工序')
|
||||
record2 = printing_models.PrintingJobBatchAdvanceRecord.objects.create(
|
||||
printing_order=self.printing_order,
|
||||
state=state2,
|
||||
created_by=self.user,
|
||||
parameters={'notes': '完成'}
|
||||
)
|
||||
record2.printing_jobs.add(self.job1)
|
||||
|
||||
response = self.client.get(f'/api/v2/printing-orders/{self.printing_order.id}/batch-advance-records/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
data = response.data
|
||||
self.assertEqual(data['total_count'], 2)
|
||||
# 最新的记录应该在前面
|
||||
self.assertEqual(data['records'][0]['id'], record2.id)
|
||||
self.assertEqual(data['records'][1]['id'], self.record.id)
|
||||
|
||||
def test_get_batch_advance_records_unauthenticated(self):
|
||||
"""测试未登录时返回 401"""
|
||||
self.client.logout()
|
||||
response = self.client.get(f'/api/v2/printing-orders/{self.printing_order.id}/batch-advance-records/')
|
||||
self.assertEqual(response.status_code, 401)
|
||||
|
||||
Reference in New Issue
Block a user