Skip to content

Commit a772476

Browse files
JamesW1-NHSmfjarvis
authored andcommitted
VED-767 Non-ASCII Bug (#819)
* typo * processing/{file_key} * run standalone * unit test
1 parent 0e43c96 commit a772476

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

recordprocessor/src/batch_processor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def process_csv_to_fhir(incoming_message_body: dict) -> int:
5050
logger.info(f"Encode error at row {row_count} with {encoder}. Switch to {new_encoder}")
5151
encoder = new_encoder
5252
# load alternative encoder
53-
csv_reader = get_csv_content_dict_reader(file_key, encoder=encoder)
53+
csv_reader = get_csv_content_dict_reader(f"processing/{file_key}", encoder=encoder)
5454
# re-read the file and skip processed rows
5555
row_count, err = process_rows(file_id, vaccine, supplier, file_key, allowed_operations,
5656
created_at_formatted_string, csv_reader, target_disease, row_count)

recordprocessor/tests/test_process_csv_to_fhir.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
from unittest.mock import patch
55
from copy import deepcopy
66
import boto3
7-
from moto import mock_s3, mock_firehose
8-
from tests.utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import (
7+
from moto import mock_s3, mock_firehose, mock_dynamodb
8+
9+
from tests.utils_for_recordprocessor_tests.generic_setup_and_teardown import (
910
GenericSetUp,
1011
GenericTearDown,
1112
)
13+
from tests.utils_for_recordprocessor_tests.utils_for_recordprocessor_tests import add_entry_to_table
1214
from tests.utils_for_recordprocessor_tests.values_for_recordprocessor_tests import (
1315
MockFileDetails,
1416
ValidMockFileContent,
@@ -19,20 +21,21 @@
1921
with patch("os.environ", MOCK_ENVIRONMENT_DICT):
2022
from batch_processor import process_csv_to_fhir
2123

22-
24+
dynamodb_client = boto3.client("dynamodb", region_name=REGION_NAME)
2325
s3_client = boto3.client("s3", region_name=REGION_NAME)
2426
firehose_client = boto3.client("firehose", region_name=REGION_NAME)
2527
test_file = MockFileDetails.rsv_emis
2628

2729

28-
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
2930
@mock_s3
3031
@mock_firehose
32+
@mock_dynamodb
33+
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
3134
class TestProcessCsvToFhir(unittest.TestCase):
3235
"""Tests for process_csv_to_fhir function"""
3336

3437
def setUp(self) -> None:
35-
GenericSetUp(s3_client, firehose_client)
38+
GenericSetUp(s3_client=s3_client, firehose_client=firehose_client, dynamodb_client=dynamodb_client)
3639

3740
redis_patcher = patch("mappings.redis_client")
3841
self.addCleanup(redis_patcher.stop)
@@ -43,7 +46,7 @@ def setUp(self) -> None:
4346
}])
4447

4548
def tearDown(self) -> None:
46-
GenericTearDown(s3_client, firehose_client)
49+
GenericTearDown(s3_client=s3_client, firehose_client=firehose_client, dynamodb_client=dynamodb_client)
4750

4851
@staticmethod
4952
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

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

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

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

recordprocessor/tests/utils_for_recordprocessor_tests/generic_setup_and_teardown.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def __init__(self, s3_client=None, firehose_client=None, sqs_client=None, dynamo
3030
for bucket_name in [
3131
BucketNames.SOURCE,
3232
BucketNames.DESTINATION,
33-
BucketNames.CONFIG,
3433
BucketNames.MOCK_FIREHOSE,
3534
]:
3635
s3_client.create_bucket(
@@ -91,7 +90,6 @@ def __init__(self, s3_client=None, firehose_client=None, sqs_client=None, dynamo
9190
for bucket_name in [
9291
BucketNames.SOURCE,
9392
BucketNames.DESTINATION,
94-
BucketNames.CONFIG,
9593
BucketNames.MOCK_FIREHOSE,
9694
]:
9795
for obj in s3_client.list_objects_v2(Bucket=bucket_name).get("Contents", []):

0 commit comments

Comments
 (0)