@@ -1090,26 +1090,44 @@ def test_valid_response_when_consumer_has_a_valid_campaign_config_mapping( # no
10901090 @pytest .mark .parametrize (
10911091 ("consumer_id" , "expected_campaign_id" ),
10921092 [
1093+ # Consumer is mapped only to RSV_campaign_id_1
10931094 ("consumer-id-1" , "RSV_campaign_id_1" ),
1095+ # Consumer is mapped only to RSV_campaign_id_2
10941096 ("consumer-id-2" , "RSV_campaign_id_2" ),
1097+ # Edge-case : Consumer-id-3 is mapped to multiple active campaigns, so the first one is only considered.
1098+ ("consumer-id-3" , "RSV_campaign_id_3" ),
1099+ # Edge-case : Consumer is mapped to inactive RSV_campaign_id_5 and active RSV_campaign_id_6
1100+ ("consumer-id-4" , "RSV_campaign_id_6" ),
1101+ # Edge-case : Consumer is mapped only to inactive RSV_campaign_id_5
1102+ ("consumer-id-5" , None ),
10951103 ],
10961104 )
10971105 @pytest .mark .parametrize (
10981106 ("campaign_configs" , "consumer_mappings" , "requested_conditions" , "requested_category" ),
10991107 [
11001108 (
1101- [("RSV" , "RSV_campaign_id_1" ), ("RSV" , "RSV_campaign_id_2" )],
1109+ [
1110+ ("RSV" , "RSV_campaign_id_1" ),
1111+ ("RSV" , "RSV_campaign_id_2" ),
1112+ ("RSV" , "RSV_campaign_id_3" ),
1113+ ("RSV" , "RSV_campaign_id_4" ),
1114+ ("RSV" , "RSV_campaign_id_5" , "inactive" ), # inactive iteration
1115+ ("RSV" , "RSV_campaign_id_6" ),
1116+ ],
11021117 {
11031118 "consumer-id-1" : [{"Campaign" : "RSV_campaign_id_1" }],
11041119 "consumer-id-2" : [{"Campaign" : "RSV_campaign_id_2" }],
1120+ "consumer-id-3" : [{"Campaign" : "RSV_campaign_id_3" }, {"Campaign" : "RSV_campaign_id_4" }],
1121+ "consumer-id-4" : [{"Campaign" : "RSV_campaign_id_5" }, {"Campaign" : "RSV_campaign_id_6" }],
1122+ "consumer-id-5" : [{"Campaign" : "RSV_campaign_id_5" }],
11051123 },
11061124 "RSV" ,
11071125 "VACCINATIONS" ,
11081126 )
11091127 ],
11101128 indirect = ["campaign_configs" , "consumer_mappings" ],
11111129 )
1112- def test_if_correct_campaign_is_chosen_for_the_consumer_if_there_exists_multiple_campaign_per_target ( # noqa: PLR0913
1130+ def test_if_correct_campaign_is_chosen_for_the_consumer_if_there_exists_multiple_campaign_per_target ( # noqa : PLR0913
11131131 self ,
11141132 client : FlaskClient ,
11151133 persisted_person : NHSNumber ,
@@ -1138,5 +1156,8 @@ def test_if_correct_campaign_is_chosen_for_the_consumer_if_there_exists_multiple
11381156 audit_data = json .loads (s3_client .get_object (Bucket = audit_bucket , Key = latest_key )["Body" ].read ())
11391157
11401158 # Then
1141- assert_that (len (audit_data ["response" ]["condition" ]), equal_to (1 ))
1142- assert_that (audit_data ["response" ]["condition" ][0 ].get ("campaignId" ), equal_to (expected_campaign_id ))
1159+ if expected_campaign_id is not None :
1160+ assert_that (len (audit_data ["response" ]["condition" ]), equal_to (1 ))
1161+ assert_that (audit_data ["response" ]["condition" ][0 ].get ("campaignId" ), equal_to (expected_campaign_id ))
1162+ else :
1163+ assert_that (len (audit_data ["response" ]["condition" ]), equal_to (0 ))
0 commit comments