11import pytest
2+ from botocore .config import Config
23
34from aws_lambda_powertools .utilities .batch import PartialSQSProcessor
45
56
6- @pytest .fixture (scope = "module " )
7+ @pytest .fixture (scope = "function " )
78def sqs_event ():
89 return {
910 "messageId" : "059f36b4-87a3-44ab-83d2-661975830a7d" ,
@@ -18,47 +19,57 @@ def sqs_event():
1819 }
1920
2021
21- def test_partial_sqs_get_queue_url_with_records (mocker , sqs_event ):
22+ @pytest .fixture (scope = "module" )
23+ def config () -> Config :
24+ return Config (region_name = "us-east-1" )
25+
26+
27+ @pytest .fixture (scope = "function" )
28+ def partial_sqs_processor (config ) -> PartialSQSProcessor :
29+ return PartialSQSProcessor (config = config )
30+
31+
32+ def test_partial_sqs_get_queue_url_with_records (mocker , sqs_event , partial_sqs_processor ):
2233 expected_url = "https://queue.amazonaws.com/123456789012/my-queue"
2334
2435 records_mock = mocker .patch .object (PartialSQSProcessor , "records" , create = True , new_callable = mocker .PropertyMock )
2536 records_mock .return_value = [sqs_event ]
2637
27- result = PartialSQSProcessor () .get_queue_url ()
38+ result = partial_sqs_processor .get_queue_url ()
2839 assert result == expected_url
2940
3041
31- def test_partial_sqs_get_queue_url_without_records ():
32- assert PartialSQSProcessor () .get_queue_url () is None
42+ def test_partial_sqs_get_queue_url_without_records (partial_sqs_processor ):
43+ assert partial_sqs_processor .get_queue_url () is None
3344
3445
35- def test_partial_sqs_get_entries_to_clean_with_success (mocker , sqs_event ):
46+ def test_partial_sqs_get_entries_to_clean_with_success (mocker , sqs_event , partial_sqs_processor ):
3647 expected_entries = [{"Id" : sqs_event ["messageId" ], "ReceiptHandle" : sqs_event ["receiptHandle" ]}]
3748
3849 success_messages_mock = mocker .patch .object (
3950 PartialSQSProcessor , "success_messages" , new_callable = mocker .PropertyMock
4051 )
4152 success_messages_mock .return_value = [sqs_event ]
4253
43- result = PartialSQSProcessor () .get_entries_to_clean ()
54+ result = partial_sqs_processor .get_entries_to_clean ()
4455
4556 assert result == expected_entries
4657
4758
48- def test_partial_sqs_get_entries_to_clean_without_success (mocker ):
59+ def test_partial_sqs_get_entries_to_clean_without_success (mocker , partial_sqs_processor ):
4960 expected_entries = []
5061
5162 success_messages_mock = mocker .patch .object (
5263 PartialSQSProcessor , "success_messages" , new_callable = mocker .PropertyMock
5364 )
5465 success_messages_mock .return_value = []
5566
56- result = PartialSQSProcessor () .get_entries_to_clean ()
67+ result = partial_sqs_processor .get_entries_to_clean ()
5768
5869 assert result == expected_entries
5970
6071
61- def test_partial_sqs_process_record_success (mocker ):
72+ def test_partial_sqs_process_record_success (mocker , partial_sqs_processor ):
6273 expected_value = mocker .sentinel .expected_value
6374
6475 success_result = mocker .sentinel .success_result
@@ -67,15 +78,15 @@ def test_partial_sqs_process_record_success(mocker):
6778 handler_mock = mocker .patch .object (PartialSQSProcessor , "handler" , create = True , return_value = success_result )
6879 success_handler_mock = mocker .patch .object (PartialSQSProcessor , "success_handler" , return_value = expected_value )
6980
70- result = PartialSQSProcessor () ._process_record (record )
81+ result = partial_sqs_processor ._process_record (record )
7182
7283 handler_mock .assert_called_once_with (record )
7384 success_handler_mock .assert_called_once_with (record , success_result )
7485
7586 assert result == expected_value
7687
7788
78- def test_partial_sqs_process_record_failure (mocker ):
89+ def test_partial_sqs_process_record_failure (mocker , partial_sqs_processor ):
7990 expected_value = mocker .sentinel .expected_value
8091
8192 failure_result = Exception ()
@@ -84,42 +95,39 @@ def test_partial_sqs_process_record_failure(mocker):
8495 handler_mock = mocker .patch .object (PartialSQSProcessor , "handler" , create = True , side_effect = failure_result )
8596 failure_handler_mock = mocker .patch .object (PartialSQSProcessor , "failure_handler" , return_value = expected_value )
8697
87- result = PartialSQSProcessor () ._process_record (record )
98+ result = partial_sqs_processor ._process_record (record )
8899
89100 handler_mock .assert_called_once_with (record )
90101 failure_handler_mock .assert_called_once_with (record , failure_result )
91102
92103 assert result == expected_value
93104
94105
95- def test_partial_sqs_prepare (mocker ):
96- processor = PartialSQSProcessor ()
97-
98- success_messages_mock = mocker .patch .object (processor , "success_messages" , spec = list )
99- failed_messages_mock = mocker .patch .object (processor , "fail_messages" , spec = list )
106+ def test_partial_sqs_prepare (mocker , partial_sqs_processor ):
107+ success_messages_mock = mocker .patch .object (partial_sqs_processor , "success_messages" , spec = list )
108+ failed_messages_mock = mocker .patch .object (partial_sqs_processor , "fail_messages" , spec = list )
100109
101- processor ._prepare ()
110+ partial_sqs_processor ._prepare ()
102111
103112 success_messages_mock .clear .assert_called_once ()
104113 failed_messages_mock .clear .assert_called_once ()
105114
106115
107- def test_partial_sqs_clean (monkeypatch , mocker ):
108- processor = PartialSQSProcessor ()
116+ def test_partial_sqs_clean (monkeypatch , mocker , partial_sqs_processor ):
109117 records = [mocker .sentinel .record ]
110118
111- monkeypatch .setattr (processor , "fail_messages" , records )
112- monkeypatch .setattr (processor , "success_messages" , records )
119+ monkeypatch .setattr (partial_sqs_processor , "fail_messages" , records )
120+ monkeypatch .setattr (partial_sqs_processor , "success_messages" , records )
113121
114122 queue_url_mock = mocker .patch .object (PartialSQSProcessor , "get_queue_url" )
115123 entries_to_clean_mock = mocker .patch .object (PartialSQSProcessor , "get_entries_to_clean" )
116124
117125 queue_url_mock .return_value = mocker .sentinel .queue_url
118126 entries_to_clean_mock .return_value = mocker .sentinel .entries_to_clean
119127
120- client_mock = mocker .patch .object (processor , "client" , autospec = True )
128+ client_mock = mocker .patch .object (partial_sqs_processor , "client" , autospec = True )
121129
122- processor ._clean ()
130+ partial_sqs_processor ._clean ()
123131
124132 client_mock .delete_message_batch .assert_called_once_with (
125133 QueueUrl = mocker .sentinel .queue_url , Entries = mocker .sentinel .entries_to_clean
0 commit comments