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