From 0cf0c4f57fc44ed475b469eb7ffa4e76c9f47209 Mon Sep 17 00:00:00 2001 From: Sujata Date: Thu, 4 Jul 2024 12:12:09 +0530 Subject: [PATCH 1/2] Fixed Task 1078 - Fixed Task [1078](https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/1078) - Updated python package - max_errors can be passed as a parameter to validate function - Added unit test cases --- requirements.txt | 2 +- src/validation.py | 8 ++--- tests/unit_tests/test_validation.py | 48 +++++++++++++++++++++++------ 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2e81635..d9ed8bf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,4 @@ uvicorn==0.20.0 coverage==7.2.7 html_testRunner==1.2.1 httpx==0.24.1 -python-osw-validation==0.2.1 \ No newline at end of file +python-osw-validation==0.2.2 \ No newline at end of file diff --git a/src/validation.py b/src/validation.py index 9ef6a5a..dfc3e45 100644 --- a/src/validation.py +++ b/src/validation.py @@ -26,10 +26,10 @@ def __init__(self, file_path=None, storage_client=None): self.file_relative_path = file_path.split('/')[-1] self.client = self.storage_client.get_container(container_name=self.container_name) - def validate(self) -> ValidationResult: - return self.is_osw_valid() + def validate(self, max_errors=20) -> ValidationResult: + return self.is_osw_valid(max_errors) - def is_osw_valid(self) -> ValidationResult: + def is_osw_valid(self, max_errors) -> ValidationResult: result = ValidationResult() result.is_valid = False result.validation_message = '' @@ -38,7 +38,7 @@ def is_osw_valid(self) -> ValidationResult: downloaded_file_path = self.download_single_file(self.file_path) logger.info(f' Downloaded file path: {downloaded_file_path}') validator = OSWValidation(zipfile_path=downloaded_file_path) - validation_result = validator.validate() + validation_result = validator.validate(max_errors) result.is_valid = validation_result.is_valid if not result.is_valid: result.validation_message = validation_result.errors diff --git a/tests/unit_tests/test_validation.py b/tests/unit_tests/test_validation.py index b469969..e70e872 100644 --- a/tests/unit_tests/test_validation.py +++ b/tests/unit_tests/test_validation.py @@ -131,6 +131,36 @@ def test_validate_with_invalid_file(self): self.assertFalse(result.is_valid) self.assertIsInstance(result.validation_message, list) + def test_validate_with_invalid_file_with_default_error_counts(self): + # Arrange + file_path = f'{SAVED_FILE_PATH}/{FAILURE_FILE_NAME}' + expected_downloaded_file_path = file_path + self.validator.download_single_file = MagicMock(return_value=expected_downloaded_file_path) + Validation.clean_up = MagicMock() + + # Act + result = self.validator.validate() + + # Assert + self.assertFalse(result.is_valid) + self.assertIsInstance(result.validation_message, list) + self.assertLessEqual(len(result.validation_message), 20) + + def test_validate_with_invalid_file_with_specific_error_counts(self): + # Arrange + file_path = f'{SAVED_FILE_PATH}/{FAILURE_FILE_NAME}' + expected_downloaded_file_path = file_path + self.validator.download_single_file = MagicMock(return_value=expected_downloaded_file_path) + Validation.clean_up = MagicMock() + + # Act + result = self.validator.validate(max_errors=10) + + # Assert + self.assertFalse(result.is_valid) + self.assertIsInstance(result.validation_message, list) + self.assertLessEqual(len(result.validation_message), 10) + def test_is_osw_valid_with_invalid_zip_file(self): # Arrange file_path = f'{SAVED_FILE_PATH}/{FAILURE_FILE_NAME}' @@ -184,7 +214,7 @@ def test_is_osw_valid_with_id_missing_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -214,7 +244,7 @@ def test_is_osw_valid_with_invalid_edges_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -244,7 +274,7 @@ def test_is_osw_valid_with_invalid_nodes_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -274,7 +304,7 @@ def test_is_osw_valid_with_invalid_points_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -304,7 +334,7 @@ def test_is_osw_valid_with_invalid_files_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -334,7 +364,7 @@ def test_is_osw_valid_with_invalid_geometry_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -364,7 +394,7 @@ def test_is_osw_valid_with_missing_identifier_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -394,7 +424,7 @@ def test_is_osw_valid_with_no_entity_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) @@ -424,7 +454,7 @@ def test_is_osw_valid_with_wring_datatype_zip(self): Validation.clean_up = MagicMock() # Act - result = self.validator.is_osw_valid() + result = self.validator.is_osw_valid(max_errors=2) # Assert self.assertFalse(result.is_valid) From d52c582547b32d3bc307acb434e26f2f798d35b5 Mon Sep 17 00:00:00 2001 From: Sujata Date: Thu, 4 Jul 2024 12:19:16 +0530 Subject: [PATCH 2/2] Fixed unit tests --- .github/workflows/unit_tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index dbce725..92d59b8 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -32,7 +32,6 @@ jobs: - name: Install dependencies run: | pip install -r requirements.txt - pip install -i https://test.pypi.org/simple/ python-osw-validation==0.0.3 - name: Run unit tests run: |