def test_reset_all_tasks(self, mock_set_task_history, mock_query, mock_get_project): user_id = 123 test_project = MagicMock(spec=Project) test_project.id = 456 test_project.tasks_mapped = 2 test_project.tasks_validated = 2 test_tasks = [ MagicMock(spec=Task), MagicMock(spec=Task), MagicMock(spec=Task) ] mock_query.return_value.filter.return_value.all.return_value = test_tasks mock_get_project.return_value = test_project ProjectAdminService.reset_all_tasks(test_project.id, user_id) for test_task in test_tasks: test_task.set_task_history.assert_called() test_task.reset_task.assert_called_with(user_id) mock_get_project.assert_called_with(test_project.id) self.assertEqual(test_project.tasks_mapped, 0) self.assertEqual(test_project.tasks_validated, 0) test_project.save.assert_called()
def post(self, project_id): """ Reset all tasks on project back to ready, preserving history --- tags: - tasks produces: - application/json parameters: - in: header name: Authorization description: Base64 encoded session token required: true type: string default: Token sessionTokenHere== - name: project_id in: path description: Unique project ID required: true type: integer default: 1 responses: 200: description: All tasks reset 401: description: Unauthorized - Invalid credentials 403: description: Forbidden 500: description: Internal Server Error """ try: authenticated_user_id = token_auth.current_user() ProjectAdminService.is_user_action_permitted_on_project( authenticated_user_id, project_id) except ValueError as e: error_msg = f"TasksActionsResetAllAPI POST: {str(e)}" return {"Error": error_msg}, 403 try: ProjectAdminService.reset_all_tasks(project_id, authenticated_user_id) return {"Success": "All tasks reset"}, 200 except Exception as e: error_msg = f"TasksActionsResetAllAPI POST - unhandled error: {str(e)}" current_app.logger.critical(error_msg) return {"Error": "Unable to reset tasks"}, 500