Skip to content

Commit 3bb91ac

Browse files
authored
VED-767 Non-ASCII Bug (#819)
* typo * processing/{file_key} * run standalone * unit test
1 parent e1266ce commit 3bb91ac

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

recordprocessor/src/batch_processor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def process_csv_to_fhir(incoming_message_body: dict) -> int:
5555
encoder = new_encoder
5656

5757
# load alternative encoder
58-
csv_reader = get_csv_content_dict_reader(file_key, encoder=encoder)
58+
csv_reader = get_csv_content_dict_reader(f"processing/{file_key}", encoder=encoder)
5959
# re-read the file and skip processed rows
6060
row_count, err = process_rows(file_id, vaccine, supplier, file_key, allowed_operations,
6161
created_at_formatted_string, csv_reader, target_disease, row_count)

recordprocessor/src/file_level_validation.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ def file_level_validation(incoming_message_body: dict) -> dict:
8989
csv_reader = get_csv_content_dict_reader(file_key, encoder="cp1252")
9090
validate_content_headers(csv_reader)
9191

92-
validate_content_headers(csv_reader)
93-
9492
# Validate has permission to perform at least one of the requested actions
9593
allowed_operations_set = get_permitted_operations(supplier, vaccine, permission)
9694

recordprocessor/tests/test_process_csv_to_fhir.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,37 @@
66
import boto3
77
from moto import mock_s3, mock_firehose, mock_dynamodb
88

9-
from constants import FileStatus, AUDIT_TABLE_NAME
10-
from utils_for_recordprocessor_tests.generic_setup_and_teardown import (
9+
from tests.utils_for_recordprocessor_tests.generic_setup_and_teardown import (
1110
GenericSetUp,
1211
GenericTearDown,
1312
)
14-
from utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import add_entry_to_table
15-
from utils_for_recordprocessor_tests.values_for_recordprocessor_tests import (
13+
from tests.utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import add_entry_to_table
14+
from tests.utils_for_recordprocessor_tests.values_for_recordprocessor_tests import (
1615
MockFileDetails,
1716
ValidMockFileContent,
1817
REGION_NAME,
1918
)
20-
from utils_for_recordprocessor_tests.mock_environment_variables import MOCK_ENVIRONMENT_DICT, BucketNames
19+
from tests.utils_for_recordprocessor_tests.mock_environment_variables import MOCK_ENVIRONMENT_DICT, BucketNames
2120

2221
with patch("os.environ", MOCK_ENVIRONMENT_DICT):
22+
from constants import FileStatus, AUDIT_TABLE_NAME
2323
from batch_processor import process_csv_to_fhir
2424

25-
2625
dynamodb_client = boto3.client("dynamodb", region_name=REGION_NAME)
2726
s3_client = boto3.client("s3", region_name=REGION_NAME)
2827
firehose_client = boto3.client("firehose", region_name=REGION_NAME)
2928
test_file = MockFileDetails.rsv_emis
3029

3130

32-
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
3331
@mock_s3
3432
@mock_firehose
3533
@mock_dynamodb
34+
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
3635
class TestProcessCsvToFhir(unittest.TestCase):
3736
"""Tests for process_csv_to_fhir function"""
3837

3938
def setUp(self) -> None:
40-
GenericSetUp(s3_client, firehose_client, dynamodb_client=dynamodb_client)
39+
GenericSetUp(s3_client=s3_client, firehose_client=firehose_client, dynamodb_client=dynamodb_client)
4140

4241
redis_patcher = patch("mappings.redis_client")
4342
self.addCleanup(redis_patcher.stop)
@@ -48,7 +47,7 @@ def setUp(self) -> None:
4847
}])
4948

5049
def tearDown(self) -> None:
51-
GenericTearDown(s3_client, firehose_client, dynamodb_client=dynamodb_client)
50+
GenericTearDown(s3_client=s3_client, firehose_client=firehose_client, dynamodb_client=dynamodb_client)
5251

5352
@staticmethod
5453
def upload_source_file(file_key, file_content):

recordprocessor/tests/test_recordprocessor_edge_cases.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import unittest
22
import os
33
from io import BytesIO
4-
from unittest.mock import patch
4+
from unittest.mock import call, patch
55
from batch_processor import process_csv_to_fhir
66
from tests.utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import create_patch
77

@@ -69,6 +69,7 @@ def test_process_large_file_cp1252(self):
6969
message_body = {
7070
"vaccine_type": "vax-type-1",
7171
"supplier": "test-supplier",
72+
"filename": "test-filename"
7273
}
7374
self.mock_map_target_disease.return_value = "some disease"
7475

@@ -79,6 +80,10 @@ def test_process_large_file_cp1252(self):
7980
self.mock_logger_warning.assert_called()
8081
warning_call_args = self.mock_logger_warning.call_args[0][0]
8182
self.assertTrue(warning_call_args.startswith("Encoding Error: 'utf-8' codec can't decode byte 0xe9"))
83+
self.mock_s3_get_object.assert_has_calls([
84+
call(Bucket=None, Key="test-filename"),
85+
call(Bucket=None, Key="processing/test-filename"),
86+
])
8287

8388
def test_process_large_file_utf8(self):
8489
""" Test processing a large file with utf-8 encoding """

0 commit comments

Comments
 (0)