forked from erp-dev/erp
feat: stateflow v2 (params required)
This commit is contained in:
@@ -24,9 +24,9 @@ class StepBackTestCase(TestCase):
|
||||
self.process = models.Process.objects.create(name='测试流程', description='三个状态的测试流程')
|
||||
|
||||
# 创建流程节点
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state1, order=1)
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state2, order=2)
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state3, order=3)
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state1, order=0)
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state2, order=1)
|
||||
models.ProcessNode.objects.create(process=self.process, state=self.state3, order=2)
|
||||
|
||||
# 创建业务对象
|
||||
self.business_object = models.BusinessObject.objects.create(
|
||||
@@ -47,13 +47,13 @@ class StepBackTestCase(TestCase):
|
||||
|
||||
def test_step_back_from_first_state(self):
|
||||
"""测试从第一个状态回退到未开始"""
|
||||
# 推进到第一个状态
|
||||
success, _ = services.advance_to_next_state(self.business_object, self.user)
|
||||
# 推进(完成第一个状态)
|
||||
success, _, _ = services.advance_to_next_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
|
||||
# 验证当前在第一个状态(进行中,准备完成第二个状态)
|
||||
# 验证 current_state 是 state1(最后完成的状态)
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.id, self.state2.id)
|
||||
self.assertEqual(current_state.name, self.state1.name)
|
||||
|
||||
# 回退一步
|
||||
success, message = services.step_back_one_state(self.business_object, self.user)
|
||||
@@ -62,6 +62,8 @@ class StepBackTestCase(TestCase):
|
||||
|
||||
# 验证回到未开始状态
|
||||
self.assertEqual(services.get_overall_status(self.business_object), 'not_started')
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertIsNone(current_state)
|
||||
|
||||
# 验证状态1的记录已被撤销
|
||||
record = models.StateFlowRecord.objects.filter(
|
||||
@@ -73,22 +75,22 @@ class StepBackTestCase(TestCase):
|
||||
|
||||
def test_step_back_from_middle_state(self):
|
||||
"""测试从中间状态回退"""
|
||||
# 推进到第二个状态
|
||||
# 推进两次(完成 state1 和 state2)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
|
||||
# 验证当前在第二个状态(进行中,准备完成第三个状态)
|
||||
# 验证 current_state 是 state2(最后完成的状态)
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.id, self.state3.id)
|
||||
self.assertEqual(current_state.name, self.state2.name)
|
||||
|
||||
# 回退一步
|
||||
success, message = services.step_back_one_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
self.assertIn('状态2', message)
|
||||
|
||||
# 验证回到第一个状态(进行中,准备完成第二个状态)
|
||||
# 验证 current_state 变为state1
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.id, self.state2.id)
|
||||
self.assertEqual(current_state.name, self.state1.name)
|
||||
|
||||
# 验证状态2的记录已被撤销
|
||||
record = models.StateFlowRecord.objects.filter(
|
||||
@@ -99,23 +101,25 @@ class StepBackTestCase(TestCase):
|
||||
|
||||
def test_step_back_from_completed(self):
|
||||
"""测试从已完成状态回退"""
|
||||
# 推进到完成
|
||||
# 推进到完成(完成所有三个状态)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
|
||||
# 验证已完成
|
||||
# 验证已完成,current_state 是 state3
|
||||
self.assertEqual(services.get_overall_status(self.business_object), 'completed')
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.name, self.state3.name)
|
||||
|
||||
# 回退一步
|
||||
success, message = services.step_back_one_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
self.assertIn('状态3', message)
|
||||
|
||||
# 验证回到进行中状态(准备完成第三个状态)
|
||||
# 验证回到进行中状态,current_state 变为state2
|
||||
self.assertEqual(services.get_overall_status(self.business_object), 'in_progress')
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.id, self.state3.id)
|
||||
self.assertEqual(current_state.name, self.state2.name)
|
||||
|
||||
def test_step_back_multiple_times(self):
|
||||
"""测试多次回退"""
|
||||
@@ -124,17 +128,17 @@ class StepBackTestCase(TestCase):
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
|
||||
# 第一次回退
|
||||
# 第一次回退(撤销 state3)
|
||||
success, _ = services.step_back_one_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
current = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current.id, self.state3.id)
|
||||
self.assertEqual(current.name, self.state2.name)
|
||||
|
||||
# 第二次回退
|
||||
# 第二次回退(撤销 state2)
|
||||
success, _ = services.step_back_one_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
current = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current.id, self.state2.id)
|
||||
self.assertEqual(current.name, self.state1.name)
|
||||
|
||||
# 第三次回退
|
||||
success, _ = services.step_back_one_state(self.business_object, self.user)
|
||||
@@ -148,20 +152,20 @@ class StepBackTestCase(TestCase):
|
||||
|
||||
def test_advance_after_step_back(self):
|
||||
"""测试回退后再前进"""
|
||||
# 推进两步
|
||||
# 推进两步(完成 state1 和 state2)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
services.advance_to_next_state(self.business_object, self.user)
|
||||
|
||||
# 回退一步
|
||||
# 回退一步(撤销 state2)
|
||||
services.step_back_one_state(self.business_object, self.user)
|
||||
|
||||
# 再前进
|
||||
success, _ = services.advance_to_next_state(self.business_object, self.user)
|
||||
# 再前进(重新完成 state2)
|
||||
success, _, _ = services.advance_to_next_state(self.business_object, self.user)
|
||||
self.assertTrue(success)
|
||||
|
||||
# 验证当前在第二个状态
|
||||
# 验证 current_state 是 state2(最后完成的)
|
||||
current_state = services.get_business_object_current_state(self.business_object)
|
||||
self.assertEqual(current_state.id, self.state3.id)
|
||||
self.assertEqual(current_state.name, self.state2.name)
|
||||
|
||||
def test_step_back_preserves_history(self):
|
||||
"""测试回退操作保留历史记录"""
|
||||
|
||||
Reference in New Issue
Block a user