def test_activity_callback__success(self): process = MockPipelineProcess() callback_data = uniqid() with patch(PIPELINE_STATUS_VERSION_FOR, MagicMock(return_value=self.version)): with patch(PIPELINE_PROCESS_GET, MagicMock(return_value=process)): # schedule service get once service = MockScheduleService() with patch(PIPELINE_SCHEDULE_SCHEDULE_FOR, MagicMock(return_value=service)): act_result = api.activity_callback(self.node_id, callback_data) self.assertTrue(act_result.result) ScheduleService.objects.schedule_for.assert_called_once_with(self.node_id, self.version) service.callback.assert_called_once_with(callback_data, process.id) # schedule service get twice service = MockScheduleService() with patch(PIPELINE_SCHEDULE_SCHEDULE_FOR, MagicMock(side_effect=[ScheduleService.DoesNotExist, service])): act_result = api.activity_callback(self.node_id, callback_data) self.assertTrue(act_result.result) ScheduleService.objects.schedule_for.assert_has_calls([mock.call(self.node_id, self.version)] * 2) service.callback.assert_called_once_with(callback_data, process.id)
def test_activity_callback__fail_with_process_not_exist(self): with patch(PIPELINE_STATUS_VERSION_FOR, MagicMock(return_value=self.version)): act_result = api.activity_callback(self.node_id, None) ScheduleService.objects.schedule_for.assert_called_once_with( self.node_id, self.version) self.assertFalse(act_result.result)
def test_activity_callback__fail_with_process_not_exist(self): with patch(PIPELINE_STATUS_VERSION_FOR, MagicMock(return_value=self.version)): act_result = api.activity_callback(self.node_id, None) ScheduleService.objects.schedule_for.assert_called_once_with(self.node_id, self.version) self.assertFalse(act_result.result) self.assertEqual(act_result.message, 'invalid operation, this node is finished or pipeline have been revoked')
def callback(act_id, data=None): return api.activity_callback(act_id, data)