From 14e13dc777db1767c46b7c552402cbc41bd226ba Mon Sep 17 00:00:00 2001 From: Mario Raciti <mario.raciti@inaf.it> Date: Wed, 7 Apr 2021 11:43:06 +0200 Subject: [PATCH] TMSS-692: Add test case for Project report action --- .../tmss/tmssapp/viewsets/specification.py | 5 ++- SAS/TMSS/backend/test/t_adapter.py | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py index 84a9df91c6e..773551410e6 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py @@ -349,12 +349,11 @@ class ProjectViewSet(LOFARViewSet): return queryset - @swagger_auto_schema(responses={200: 'The Report', + @swagger_auto_schema(responses={200: 'The Report information', 403: 'forbidden'}, - operation_description="Get Report for the project.") + operation_description="Get Report information for the project.") @action(methods=['get'], detail=True, url_name="report", name="Get Report") def report(self, request, pk=None): - # TODO: Discuss about the endpoint choose. ATM is /project/<project-name>/report project = get_object_or_404(models.Project, pk=pk) result = create_project_report(request, project) return Response(result, status=status.HTTP_200_OK) diff --git a/SAS/TMSS/backend/test/t_adapter.py b/SAS/TMSS/backend/test/t_adapter.py index 772a2d43ed7..1d0c3438112 100755 --- a/SAS/TMSS/backend/test/t_adapter.py +++ b/SAS/TMSS/backend/test/t_adapter.py @@ -507,6 +507,42 @@ _isCobalt=T self.assertEqual(self.feedback_pipe_complete.strip(), subtask_pipe.raw_feedback.strip()) +class ProjectReportTest(unittest.TestCase): + def setUp(self): + # Create requirements + self.project = models.Project.objects.create(**Project_test_data(name='test_for_report')) + self.scheduling_set = models.SchedulingSet.objects.create(**SchedulingSet_test_data(project=self.project)) + self.scheduling_unit_draft = models.SchedulingUnitDraft.objects.create( + **SchedulingUnitDraft_test_data(scheduling_set=self.scheduling_set)) + self.task_draft = models.TaskDraft.objects.create( + **TaskDraft_test_data(scheduling_unit_draft=self.scheduling_unit_draft)) + self.scheduling_unit_blueprint = models.SchedulingUnitBlueprint.objects.create( + **SchedulingUnitBlueprint_test_data(draft=self.scheduling_unit_draft)) + self.task_blueprint = models.TaskBlueprint.objects.create( + **TaskBlueprint_test_data(task_draft=self.task_draft, scheduling_unit_blueprint=self.scheduling_unit_blueprint)) + + def test_create_report(self): + # TODO: Add ProjectQuota sample. + + # Create Subtask of type 'ingest' + subtask_template = models.SubtaskTemplate.objects.create(**SubtaskTemplate_test_data(subtask_type_value='ingest')) + subtask = models.Subtask.objects.create(**Subtask_test_data(task_blueprint=self.task_blueprint, subtask_template=subtask_template)) + + # Set Subtask status to 'finished' + with tmss_test_env.create_tmss_client() as client: + client.set_subtask_status(subtask.pk, 'finished') + + # Refreshing Subtask from cache. + subtask = models.Subtask.objects.get(pk=subtask.pk) + while subtask.state.value != 'finished': + subtask = models.Subtask.objects.get(pk=subtask.pk) + + # Create SubtaskOutput and Dataproduct + subtask_output = models.SubtaskOutput.objects.create(**SubtaskOutput_test_data(subtask=subtask)) + dataproduct = models.Dataproduct.objects.create(**Dataproduct_test_data(producer=subtask_output)) + + # TODO: Assert we get the expected object. + if __name__ == "__main__": os.environ['TZ'] = 'UTC' -- GitLab