22from enum import Enum
33
44import pytest
5+ from enums .feature_flags import FeatureFlags
56from handlers .document_reference_search_handler import lambda_handler
67from tests .unit .helpers .data .dynamo .dynamo_responses import EXPECTED_RESPONSE
78from utils .lambda_exceptions import DocumentRefSearchException
@@ -21,6 +22,9 @@ def mocked_service(set_env, mocker):
2122 mocked_class = mocker .patch (
2223 "handlers.document_reference_search_handler.DocumentReferenceSearchService"
2324 )
25+ mocker .patch (
26+ "handlers.document_reference_search_handler.FeatureFlagService.get_feature_flags_by_flag"
27+ )
2428 mocked_service = mocked_class .return_value
2529 yield mocked_service
2630
@@ -119,3 +123,73 @@ def test_lambda_handler_when_dynamo_tables_env_variable_not_supplied_then_return
119123 ).create_api_gateway_response ()
120124 actual = lambda_handler (valid_id_event_without_auth_header , context )
121125 assert expected == actual
126+
127+
128+ def test_lambda_handler_with_feature_flag_enabled_applies_doc_status_filter (
129+ set_env , mocker , valid_id_event_without_auth_header , context
130+ ):
131+ """Test that when feature flag is ON, doc_status filter is applied"""
132+ mocked_service_class = mocker .patch (
133+ "handlers.document_reference_search_handler.DocumentReferenceSearchService"
134+ )
135+ mocked_service = mocked_service_class .return_value
136+ mocked_service .get_document_references .return_value = EXPECTED_RESPONSE
137+
138+ mocked_feature_flag_service = mocker .patch (
139+ "handlers.document_reference_search_handler.FeatureFlagService"
140+ )
141+ mocked_feature_flag_instance = mocked_feature_flag_service .return_value
142+ mocked_feature_flag_instance .get_feature_flags_by_flag .return_value = {
143+ FeatureFlags .UPLOAD_DOCUMENT_ITERATION_2_ENABLED : True
144+ }
145+
146+ expected = ApiGatewayResponse (
147+ 200 , json .dumps (EXPECTED_RESPONSE ), "GET"
148+ ).create_api_gateway_response ()
149+
150+ actual = lambda_handler (valid_id_event_without_auth_header , context )
151+
152+ assert expected == actual
153+ mocked_feature_flag_instance .get_feature_flags_by_flag .assert_called_once_with (
154+ FeatureFlags .UPLOAD_DOCUMENT_ITERATION_2_ENABLED
155+ )
156+ mocked_service .get_document_references .assert_called_once_with (
157+ "9000000009" ,
158+ check_upload_completed = True ,
159+ additional_filters = {"doc_status" : "final" },
160+ )
161+
162+
163+ def test_lambda_handler_with_feature_flag_disabled_no_doc_status_filter (
164+ set_env , mocker , valid_id_event_without_auth_header , context
165+ ):
166+ """Test that when feature flag is OFF, no doc_status filter is applied"""
167+ mocked_service_class = mocker .patch (
168+ "handlers.document_reference_search_handler.DocumentReferenceSearchService"
169+ )
170+ mocked_service = mocked_service_class .return_value
171+ mocked_service .get_document_references .return_value = EXPECTED_RESPONSE
172+
173+ mocked_feature_flag_service = mocker .patch (
174+ "handlers.document_reference_search_handler.FeatureFlagService"
175+ )
176+ mocked_feature_flag_instance = mocked_feature_flag_service .return_value
177+ mocked_feature_flag_instance .get_feature_flags_by_flag .return_value = {
178+ FeatureFlags .UPLOAD_DOCUMENT_ITERATION_2_ENABLED : False
179+ }
180+
181+ expected = ApiGatewayResponse (
182+ 200 , json .dumps (EXPECTED_RESPONSE ), "GET"
183+ ).create_api_gateway_response ()
184+
185+ actual = lambda_handler (valid_id_event_without_auth_header , context )
186+
187+ assert expected == actual
188+ mocked_feature_flag_instance .get_feature_flags_by_flag .assert_called_once_with (
189+ FeatureFlags .UPLOAD_DOCUMENT_ITERATION_2_ENABLED
190+ )
191+ mocked_service .get_document_references .assert_called_once_with (
192+ "9000000009" ,
193+ check_upload_completed = True ,
194+ additional_filters = None ,
195+ )
0 commit comments