11import os
22import unittest
33from io import BytesIO
4- from unittest .mock import call , patch
4+ from unittest .mock import Mock , call , patch
55
66from batch_processor import process_csv_to_fhir
77from utils_for_recordprocessor_tests .utils_for_recordprocessor_tests import (
8+ BucketNames ,
89 create_patch ,
910)
1011
@@ -16,8 +17,7 @@ def setUp(self):
1617 self .mock_logger_error = create_patch ("logging.Logger.error" )
1718 self .mock_send_to_kinesis = create_patch ("batch_processor.send_to_kinesis" )
1819 self .mock_map_target_disease = create_patch ("batch_processor.map_target_disease" )
19- self .mock_s3_get_object = create_patch ("utils_for_recordprocessor.s3_client.get_object" )
20- self .mock_s3_put_object = create_patch ("utils_for_recordprocessor.s3_client.put_object" )
20+ self .mock_get_s3_client = create_patch ("utils_for_recordprocessor.get_s3_client" )
2121 self .mock_make_and_move = create_patch ("file_level_validation.make_and_upload_ack_file" )
2222 self .mock_move_file = create_patch ("file_level_validation.move_file" )
2323 self .mock_get_permitted_operations = create_patch ("file_level_validation.get_permitted_operations" )
@@ -63,7 +63,9 @@ def test_process_large_file_cp1252(self):
6363 data = self .insert_cp1252_at_end (data , b"D\xe9 cembre" , 2 )
6464 ret1 = {"Body" : BytesIO (b"" .join (data ))}
6565 ret2 = {"Body" : BytesIO (b"" .join (data ))}
66- self .mock_s3_get_object .side_effect = [ret1 , ret2 ]
66+ mock_s3 = Mock ()
67+ mock_s3 .get_object .side_effect = [ret1 , ret2 ]
68+ self .mock_get_s3_client .return_value = mock_s3
6769 self .mock_map_target_disease .return_value = "some disease"
6870
6971 message_body = {
@@ -80,10 +82,11 @@ def test_process_large_file_cp1252(self):
8082 self .mock_logger_warning .assert_called ()
8183 warning_call_args = self .mock_logger_warning .call_args [0 ][0 ]
8284 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 (
85+ # TODO: when running all tests this expects Bucket=None. not clear why.
86+ mock_s3 .get_object .assert_has_calls (
8487 [
85- call (Bucket = None , Key = "test-filename" ),
86- call (Bucket = None , Key = "processing/test-filename" ),
88+ call (Bucket = BucketNames . SOURCE , Key = "test-filename" ),
89+ call (Bucket = BucketNames . SOURCE , Key = "processing/test-filename" ),
8790 ]
8891 )
8992
@@ -94,7 +97,9 @@ def test_process_large_file_utf8(self):
9497 data = self .expand_test_data (data , n_rows )
9598 ret1 = {"Body" : BytesIO (b"" .join (data ))}
9699 ret2 = {"Body" : BytesIO (b"" .join (data ))}
97- self .mock_s3_get_object .side_effect = [ret1 , ret2 ]
100+ mock_s3 = Mock ()
101+ mock_s3 .get_object .side_effect = [ret1 , ret2 ]
102+ self .mock_get_s3_client .return_value = mock_s3
98103 self .mock_map_target_disease .return_value = "some disease"
99104
100105 message_body = {
@@ -118,7 +123,9 @@ def test_process_small_file_cp1252(self):
118123
119124 ret1 = {"Body" : BytesIO (b"" .join (data ))}
120125 ret2 = {"Body" : BytesIO (b"" .join (data ))}
121- self .mock_s3_get_object .side_effect = [ret1 , ret2 ]
126+ mock_s3 = Mock ()
127+ mock_s3 .get_object .side_effect = [ret1 , ret2 ]
128+ self .mock_get_s3_client .return_value = mock_s3
122129 self .mock_map_target_disease .return_value = "some disease"
123130
124131 message_body = {
@@ -143,7 +150,9 @@ def test_process_small_file_utf8(self):
143150
144151 ret1 = {"Body" : BytesIO (b"" .join (data ))}
145152 ret2 = {"Body" : BytesIO (b"" .join (data ))}
146- self .mock_s3_get_object .side_effect = [ret1 , ret2 ]
153+ mock_s3 = Mock ()
154+ mock_s3 .get_object .side_effect = [ret1 , ret2 ]
155+ self .mock_get_s3_client .return_value = mock_s3
147156 self .mock_map_target_disease .return_value = "some disease"
148157
149158 message_body = {
0 commit comments