class test__TransitionService(ApprovementServiceBasedTest): def test_approve_transition(self): ObjectService.register_object(self.objects[0], self.field) ObjectService.register_object(self.objects[1], self.field) # #################### # STATE 1 - STATE 2 # Only User1(2001) can approve and after his approve state must be changed to STATE 2 # ################### # Approved by user has no required permission for this transition try: TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code) try: TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code)
def test_approve_transition(self): ObjectService.register_object(self.objects[0], self.field) ObjectService.register_object(self.objects[1], self.field) # #################### # STATE 1 - STATE 2 # Only User1(2001) can approve and after his approve state must be changed to STATE 2 # ################### # Approved by user has no required permission for this transition try: TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code)
def test_register_for_an_object(self): self.test_args = None self.test_kwargs = None def test_handler(*args, **kwargs): self.test_args = args self.test_kwargs = kwargs ObjectService.register_object(self.objects[0], self.field) ObjectService.register_object(self.objects[1], self.field) PostCompletedHandler.register(test_handler, self.objects[0], 'my_field') self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user1) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) # Approved but no transition TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user3) self.assertEqual((self.objects[0], 'my_field'), self.test_args)
def test_register_for_a_transition(self): self.test_args = None self.test_kwargs = None def test_handler(*args, **kwargs): self.test_args = args self.test_kwargs = kwargs ObjectService.register_object(self.objects[0], self.field) ObjectService.register_object(self.objects[1], self.field) PostTransitionHandler.register(test_handler, self.objects[0], 'my_field', source_state=State.objects.get(label='s2'), destination_state=State.objects.get(label='s3')) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user1) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user3) self.assertEqual((self.objects[0], 'my_field'), self.test_args) self.assertDictEqual( { 'approvement': Approvement.objects.filter(meta__transition__source_state=State.objects.get(label='s2'), meta__transition__destination_state=State.objects.get(label='s3'))[2], 'source_state': State.objects.get(label='s2'), 'destination_state': State.objects.get(label='s3') }, self.test_kwargs)
def test_register_for_a_transition(self): self.test_args = None self.test_kwargs = None def test_handler(*args, **kwargs): self.test_args = args self.test_kwargs = kwargs ObjectService.register_object(self.objects[0], self.field) ObjectService.register_object(self.objects[1], self.field) PostTransitionHandler.register( test_handler, self.objects[0], 'my_field', source_state=State.objects.get(label='s2'), destination_state=State.objects.get(label='s3')) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user1) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.assertIsNone(self.test_args) self.assertIsNone(self.test_kwargs) TransitionService.approve_transition(self.objects[0], self.field, self.user3) self.assertEqual((self.objects[0], 'my_field'), self.test_args) self.assertDictEqual( { 'approvement': Approvement.objects.filter( meta__transition__source_state=State.objects.get( label='s2'), meta__transition__destination_state=State.objects.get( label='s3'))[2], 'source_state': State.objects.get(label='s2'), 'destination_state': State.objects.get(label='s3') }, self.test_kwargs)
def approve(self, user, *args, **kwargs): TransitionService.approve_transition(self, name, user, *args, **kwargs)
except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code) try: TransitionService.approve_transition(self.objects[0], self.field, self.user2) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code) # Approved by user has no required permission for this transition try: TransitionService.approve_transition(self.objects[0], self.field, self.user3) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code) try: TransitionService.approve_transition(self.objects[0], self.field, self.user3) self.fail('Exception was expected') except RiverException, e: self.assertEqual(e.message, 'There is no available state for destination for the user.') self.assertEqual(ErrorCode.NO_AVAILABLE_NEXT_STATE_FOR_USER, e.code) # Approved by user has no required permission for this transition