1
0
forked from erp-dev/erp

fix: [stateflow] query cancelled state with parameters failed

This commit is contained in:
2025-11-24 08:46:28 +08:00
parent 2a838199fa
commit 0e77496d9a
6 changed files with 149 additions and 4 deletions

View File

@@ -597,6 +597,38 @@ class BusinessObjectAPITestCase(TestCase):
self.assertLessEqual(time1, time2)
self.assertLessEqual(time2, time3)
def test_get_state_logs_api_cancelled_state_with_parameters(self):
"""测试获取已撤销状态的工艺参数bug修复验证"""
# 推进并提供参数
self.client.post(
f'/api/v1/stateflow/business-objects/{self.business_object.id}/advance/',
{'parameters': {'temperature': '25.5', 'humidity': '60%'}},
format='json'
)
# 回退(撤销该状态)
self.client.post(f'/api/v1/stateflow/business-objects/{self.business_object.id}/step_back/')
# 使用 include_cancelled=true 和 include_parameters=true 获取状态记录
response = self.client.get(
f'/api/v1/stateflow/business-objects/{self.business_object.id}/state-logs/?include_cancelled=true&include_parameters=true'
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
# 验证返回2条记录撤销后原来的记录也在只是标记为已撤销
self.assertEqual(response.data['count'], 1)
# 验证记录包含工艺参数
logs = response.data['state_logs']
self.assertEqual(len(logs), 1)
state_log = logs[0]
self.assertTrue(state_log['is_cancelled'])
self.assertIn('parameters_summary', state_log)
self.assertEqual(state_log['parameters_summary']['temperature'], '25.5')
self.assertEqual(state_log['parameters_summary']['humidity'], '60%')
def test_advance_when_already_completed(self):
"""测试流程已完成时尝试推进(预期错误)"""
# 完成所有状态