From 102bb75a2d37e9ec64e6db66c63ca570f0dbece0 Mon Sep 17 00:00:00 2001
From: Robbie Luijben <luijben@astron.nl>
Date: Tue, 21 Nov 2023 11:03:16 +0100
Subject: [PATCH] added non-database tests for extracted logic

---
 .../services/calculated_qualities.py          | 23 ++++++++-------
 ...t_calculated_qualities_without_database.py | 29 +++++++++++++++++++
 2 files changed, 41 insertions(+), 11 deletions(-)
 create mode 100644 atdb/taskdatabase/tests/test_calculated_qualities_without_database.py

diff --git a/atdb/taskdatabase/services/calculated_qualities.py b/atdb/taskdatabase/services/calculated_qualities.py
index d956c66f..3cc29eb3 100644
--- a/atdb/taskdatabase/services/calculated_qualities.py
+++ b/atdb/taskdatabase/services/calculated_qualities.py
@@ -3,6 +3,16 @@ from .common import get_summary_flavour, SummaryFlavour
 logger = logging.getLogger(__name__)
 
 
+def rfi_percentage_to_quality(rfi_percent, quality_treshold_moderate, quality_treshold_poor):
+    quality = None
+    if rfi_percent >= 0:
+        quality = "good"
+        if rfi_percent >= quality_treshold_moderate:
+            quality = "moderate"
+        if rfi_percent > quality_treshold_poor:
+            quality = "poor"
+    return quality
+
 def calculate_qualities(task, tasks_for_this_sasid, quality_thresholds):
     """"
     calculate the quality for this task, but also the quality for all the combined tasks of this sas_id
@@ -41,16 +51,6 @@ def calculate_qualities(task, tasks_for_this_sasid, quality_thresholds):
             # Just continue without it
             pass
 
-    def rfi_percentage_to_quality(rfi_percent, quality_treshold_moderate, quality_treshold_poor):
-        quality = None
-        if rfi_percent >= 0:
-            quality = "good"
-            if rfi_percent >= quality_treshold_moderate:
-                quality = "moderate"
-            if rfi_percent > quality_treshold_poor:
-                quality = "poor"
-        return quality
-
     def calculate_quality_sasid(unsaved_task, tasks_for_this_sasid):
         """
         calculate the overall quality per sas_id, based on other tasks with the same sas_id
@@ -122,4 +122,5 @@ def calculate_qualities(task, tasks_for_this_sasid, quality_thresholds):
     except Exception as error:
         logger.error(error)
 
-    return qualities
\ No newline at end of file
+    return qualities
+
diff --git a/atdb/taskdatabase/tests/test_calculated_qualities_without_database.py b/atdb/taskdatabase/tests/test_calculated_qualities_without_database.py
new file mode 100644
index 00000000..7469bdf0
--- /dev/null
+++ b/atdb/taskdatabase/tests/test_calculated_qualities_without_database.py
@@ -0,0 +1,29 @@
+import unittest
+from taskdatabase.services import calculated_qualities as qualities
+class TestCalculatedQualities(unittest.TestCase):
+
+    moderate_treshold = 20
+    poor_treshold = 50
+
+    def test_rfi_percentage_to_quality_None(self):
+        quality = qualities.rfi_percentage_to_quality(-10, TestCalculatedQualities.moderate_treshold, TestCalculatedQualities.poor_treshold)
+        self.assertIsNone(quality)
+
+    def test_rfi_percentage_to_quality_Zero(self):
+        quality = qualities.rfi_percentage_to_quality(0, TestCalculatedQualities.moderate_treshold,
+                                                      TestCalculatedQualities.poor_treshold)
+        self.assertIsNotNone(quality)
+
+    def test_rfi_percentage_to_quality_Poor(self):
+        quality = qualities.rfi_percentage_to_quality(60, TestCalculatedQualities.moderate_treshold, TestCalculatedQualities.poor_treshold)
+        self.assertEqual(quality, "poor")
+
+    def test_rfi_percentage_to_quality_Moderate(self):
+        quality = qualities.rfi_percentage_to_quality(25, TestCalculatedQualities.moderate_treshold, TestCalculatedQualities.poor_treshold)
+        self.assertEqual(quality, "moderate")
+
+    def test_rfi_percentage_to_quality_Good(self):
+        quality = qualities.rfi_percentage_to_quality(19, TestCalculatedQualities.moderate_treshold, TestCalculatedQualities.poor_treshold)
+        self.assertEqual(quality, "good")
+
+
-- 
GitLab