From db3578381c11b04f961df7a1313c9df7751c7fdb Mon Sep 17 00:00:00 2001
From: lb584 <lb584@cam.ac.uk>
Date: Wed, 26 Apr 2023 17:39:16 +0100
Subject: [PATCH] fixing unit tests I hadnt noticed that I had broken

---
 tests/integration/partial/test_advisory.py    | 29 ++++++++++---------
 tests/integration/partial/test_survey.py      | 28 ++++++++++--------
 .../test_suites/advisory_test_suite.py        | 26 +++++++----------
 .../test_suites/survey_test_suite.py          | 12 +++-----
 4 files changed, 47 insertions(+), 48 deletions(-)

diff --git a/tests/integration/partial/test_advisory.py b/tests/integration/partial/test_advisory.py
index c559f04..d79c423 100644
--- a/tests/integration/partial/test_advisory.py
+++ b/tests/integration/partial/test_advisory.py
@@ -9,8 +9,8 @@ from integration.test_suites.advisory_test_suite import BaseAdvisoryTestSuite
 class TestAdvisory(BaseAdvisoryTestSuite.AdvisoryTestSuite):
 
     def set_expected_values(self):
-        BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_START_DATE = '20221001'
-        BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR = "ADVISORY_" + BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_START_DATE
+        IntegrationTestUtils.TEST_START_DATE = '20221001'
+        IntegrationTestUtils.TEST_JOB_DIR = "ADVISORY_" + IntegrationTestUtils.TEST_START_DATE
         self.EXPECTED_EA_IMAGE_COUNT = 3
         self.EXPECTED_ETH_IMAGE_COUNT = 3
         self.EXPECTED_EA_SHAPE_COUNT = 3
@@ -20,43 +20,46 @@ class TestAdvisory(BaseAdvisoryTestSuite.AdvisoryTestSuite):
 
         self.set_expected_values()
 
-        if BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH is None or not os.path.isdir(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH):
+        if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(IntegrationTestUtils.TEST_OUT_PATH):
             TestAdvisory.write_temp_run_config_files()
             TestAdvisory.unpack_dependencies()
             TestAdvisory.run_advisory_pipeline()
         else:
-            print(f"output in {BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
 
 
     @staticmethod
     def write_temp_run_config_files():
         nowstring: str = IntegrationTestUtils.get_now_string()
-        # prefix: str = "temp_advisory_" + nowstring
-        prefix: str = "temp_advisory"
+        prefix: str = "temp_advisory_" + nowstring
+        # prefix: str = "temp_advisory"
 
         default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH
         default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config)
         run_dict: dict = copy.deepcopy(default_config_dict)
-        BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep
+        IntegrationTestUtils.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep
         # TestAdvisory.TEST_OUT_PATH = run_dict['WorkspacePathout'] + prefix + os.sep
-        run_dict['WorkspacePathout'] = BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH
-        run_dict['WorkspacePath'] = BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH
+        run_dict['WorkspacePathout'] = IntegrationTestUtils.TEST_OUT_PATH
+        run_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
         run_dict['ServerName'] = ''  # nothing, as local machine
 
+        # may be reusing a non-timestamped output file during development, so allow extant TEST_OUT_PATH
+        os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
+        IntegrationTestUtils.TEMP_CONFIG_FILE_NAME = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
         IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.TEMP_CONFIG_FILE_NAME)
 
 
     @staticmethod
     def unpack_dependencies():
-        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_SURVEY_FILE_PATH, TestAdvisory.TEST_OUT_PATH)
-        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_DEPO_FILE_PATH, TestAdvisory.TEST_OUT_PATH)
-        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_ENV_SUIT_FILE_PATH, TestAdvisory.TEST_OUT_PATH)
+        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_SURVEY_FILE_PATH, IntegrationTestUtils.TEST_OUT_PATH)
+        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_DEPO_FILE_PATH, IntegrationTestUtils.TEST_OUT_PATH)
+        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_ENV_SUIT_FILE_PATH, IntegrationTestUtils.TEST_OUT_PATH)
 
 
     @staticmethod
     def run_advisory_pipeline():
         component = 'Advisory'
-        IntegrationTestUtils.run_unittest_pipeline(component, TestAdvisory.TEST_START_DATE)
+        IntegrationTestUtils.run_unittest_pipeline(component, IntegrationTestUtils.TEST_START_DATE)
 
 
 if __name__ == '__main__':
diff --git a/tests/integration/partial/test_survey.py b/tests/integration/partial/test_survey.py
index da26e01..faca2fc 100644
--- a/tests/integration/partial/test_survey.py
+++ b/tests/integration/partial/test_survey.py
@@ -9,21 +9,21 @@ from integration.test_suites.survey_test_suite import BaseSurveyTestSuite
 class TestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
 
     def set_expected_values(self):
-        BaseSurveyTestSuite.SurveyTestSuite.TEST_START_DATE = '20221001'
-        BaseSurveyTestSuite.SurveyTestSuite.TEST_JOB_DIR = "SURVEYDATA_" + BaseSurveyTestSuite.SurveyTestSuite.TEST_START_DATE
+        IntegrationTestUtils.TEST_START_DATE = '20221001'
+        IntegrationTestUtils.TEST_JOB_DIR = "SURVEYDATA_" + IntegrationTestUtils.TEST_START_DATE
 
 
     def setUp(self) -> None:
 
         self.set_expected_values()
 
-        if BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH is None or not os.path.isdir(
-                BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH):
+        if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(
+                IntegrationTestUtils.TEST_OUT_PATH):
             TestSurvey.write_temp_run_config_file()
             TestSurvey.unpack_dependencies()
             TestSurvey.run_survey_pipeline()
         else:
-            print(f"output in {BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH} already written, skipping rerun")
+            print(f"output in {IntegrationTestUtils.TEST_OUT_PATH} already written, skipping rerun")
 
 
     @staticmethod
@@ -35,23 +35,27 @@ class TestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
         default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH
         default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config)
         run_dict: dict = copy.deepcopy(default_config_dict)
-        # TestSurvey.TEST_OUT_PATH = run_dict['WorkspacePathout'] + prefix + os.sep
-        BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep
-        run_dict['WorkspacePathout'] = TestSurvey.TEST_OUT_PATH
-        run_dict['WorkspacePath'] = TestSurvey.TEST_OUT_PATH
-        run_dict['Survey']['SkipServerDownload'] = True
+        IntegrationTestUtils.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep
+        run_dict['WorkspacePathout'] = IntegrationTestUtils.TEST_OUT_PATH
+        run_dict['WorkspacePath'] = IntegrationTestUtils.TEST_OUT_PATH
+        run_dict['Environment']['WORK_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
+        run_dict['Environment']['INPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
+        run_dict['Environment']['OUTPUT_PATH'] = IntegrationTestUtils.TEST_OUT_PATH
         run_dict['ServerName'] = ''  # nothing, as local machine
 
+        # may be reusing a non-timestamped output file during development, so allow extant TEST_OUT_PATH
+        os.makedirs(IntegrationTestUtils.TEST_OUT_PATH, exist_ok = True)
+        IntegrationTestUtils.TEMP_CONFIG_FILE_NAME = IntegrationTestUtils.TEST_OUT_PATH + "temp_config.json"
         IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.TEMP_CONFIG_FILE_NAME)
 
     @staticmethod
     def unpack_dependencies():
-        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_SURVEY_FILE_PATH, TestSurvey.TEST_OUT_PATH)
+        IntegrationTestUtils.unpack_zip(IntegrationTestUtils.EXAMPLE_SURVEY_FILE_PATH, IntegrationTestUtils.TEST_OUT_PATH)
 
     @staticmethod
     def run_survey_pipeline():
         component = 'Survey'
-        IntegrationTestUtils.run_unittest_pipeline(component, TestSurvey.TEST_START_DATE)
+        IntegrationTestUtils.run_unittest_pipeline(component, IntegrationTestUtils.TEST_START_DATE)
 
 
 if __name__ == '__main__':
diff --git a/tests/integration/test_suites/advisory_test_suite.py b/tests/integration/test_suites/advisory_test_suite.py
index 03b3f6c..f46695f 100644
--- a/tests/integration/test_suites/advisory_test_suite.py
+++ b/tests/integration/test_suites/advisory_test_suite.py
@@ -10,10 +10,6 @@ class BaseAdvisoryTestSuite:
 
     class AdvisoryTestSuite(unittest.TestCase):
 
-        TEST_OUT_PATH: str = None
-        TEST_START_DATE: str = None
-        TEST_JOB_DIR: str = None
-
         @abc.abstractmethod
         def set_expected_values(self):
             self.EXPECTED_EA_IMAGE_COUNT = 0
@@ -22,18 +18,18 @@ class BaseAdvisoryTestSuite:
 
 
         def test_standard_run_input_status_success(self):
-            status_file_path = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH, BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR, "STATUS_SUCCESS")
+            status_file_path = os.path.join(IntegrationTestUtils.TEST_OUT_PATH, IntegrationTestUtils.TEST_JOB_DIR, "STATUS_SUCCESS")
             success_file_exists: bool = os.path.isfile(status_file_path)
             self.assertTrue(success_file_exists)
 
 
         def test_standard_run_input_all_docs_produced(self):
-            east_africa_image_wildcard = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH,
-                                                  BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR,
+            east_africa_image_wildcard = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                                  IntegrationTestUtils.TEST_JOB_DIR,
                                                   "tight-layout",
                                                   "wheat_rust_advisory_template_EastAfrica_*.docx")
-            ethiopia_image_wildcard = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH,
-                                               BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR,
+            ethiopia_image_wildcard = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                               IntegrationTestUtils.TEST_JOB_DIR,
                                                "tight-layout",
                                                "wheat_rust_advisory_template_Ethiopia_*.docx")
 
@@ -44,12 +40,12 @@ class BaseAdvisoryTestSuite:
 
 
         def test_standard_run_input_images_produced(self):
-            east_africa_image_wildcard = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH,
-                                                      BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR,
+            east_africa_image_wildcard = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                                      IntegrationTestUtils.TEST_JOB_DIR,
                                                       "images",
                                                       "*eastafrica*.png")
-            ethiopia_image_wildcard = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH,
-                                                   BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR,
+            ethiopia_image_wildcard = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                                   IntegrationTestUtils.TEST_JOB_DIR,
                                                    "images",
                                                    "*ethiopia*.png")
 
@@ -60,8 +56,8 @@ class BaseAdvisoryTestSuite:
 
 
         def test_standard_run_input_shapefiles_produced(self):
-            east_africa_image_wildcard = os.path.join(BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_OUT_PATH,
-                                                      BaseAdvisoryTestSuite.AdvisoryTestSuite.TEST_JOB_DIR,
+            east_africa_image_wildcard = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                                      IntegrationTestUtils.TEST_JOB_DIR,
                                                       "images",
                                                       "*eastafrica*.shp")
 
diff --git a/tests/integration/test_suites/survey_test_suite.py b/tests/integration/test_suites/survey_test_suite.py
index 0ab19ee..6c6804d 100644
--- a/tests/integration/test_suites/survey_test_suite.py
+++ b/tests/integration/test_suites/survey_test_suite.py
@@ -9,25 +9,21 @@ class BaseSurveyTestSuite:
 
     class SurveyTestSuite(unittest.TestCase):
 
-        TEST_OUT_PATH: str = None
-        TEST_START_DATE: str = None
-        TEST_JOB_DIR: str = None
-
         @abc.abstractmethod
         def set_expected_values(self):
             pass
 
 
         def test_standard_run_input_status_success(self):
-            status_file_path = os.path.join(BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH,
-                                            BaseSurveyTestSuite.SurveyTestSuite.TEST_JOB_DIR, "STATUS_SUCCESS")
+            status_file_path = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                            IntegrationTestUtils.TEST_JOB_DIR, "STATUS_SUCCESS")
             success_file_exists: bool = os.path.isfile(status_file_path)
             self.assertTrue(success_file_exists)
 
 
         def test_standard_run_input_merged_survey_created(self):
-            status_file_path = os.path.join(BaseSurveyTestSuite.SurveyTestSuite.TEST_OUT_PATH,
-                                            BaseSurveyTestSuite.SurveyTestSuite.TEST_JOB_DIR,
+            status_file_path = os.path.join(IntegrationTestUtils.TEST_OUT_PATH,
+                                            IntegrationTestUtils.TEST_JOB_DIR,
                                             "ExportCSV", "Merged_SurveyData.csv")
             success_file_exists: bool = os.path.isfile(status_file_path)
             file_not_empty: bool = IntegrationTestUtils.check_file_not_empty(status_file_path)
-- 
GitLab