@@ -196,6 +196,185 @@ def test_append_audit_condition_adds_condition_to_audit_log_on_g_for_actionable_
196196 assert cond .eligibility_cohort_groups [0 ].cohort_text == "CohortDescription1"
197197
198198
199+ def test_append_audit_condition_with_status_override_text (app ):
200+ suggested_actions : list [SuggestedAction ] | None
201+ condition_name : ConditionName
202+ campaign_details : tuple [CampaignID | None , CampaignVersion | None ]
203+
204+ # Build dummy variables sufficient to be able to call append_audit_condition.
205+ suggested_actions = [
206+ SuggestedAction (
207+ internal_action_code = InternalActionCode ("InternalActionCode1" ),
208+ action_code = ActionCode ("ActionCode1" ),
209+ action_type = ActionType ("ActionType1" ),
210+ action_description = ActionDescription ("ActionDescription1" ),
211+ url_link = UrlLink (HttpUrl ("https://example.com/" )),
212+ url_label = UrlLabel ("ActionLabel1" ),
213+ )
214+ ]
215+ condition_name = ConditionName ("Condition1" )
216+ iteration = IterationFactory .build (version = 12345 )
217+ audit_rules = [
218+ Reason (
219+ rule_type = RuleType .redirect ,
220+ rule_name = RuleName ("RedirectRuleName1" ),
221+ rule_code = RuleCode ("RedirectRuleCode1" ),
222+ rule_text = RuleText ("RedirectRuleDescription1" ),
223+ matcher_matched = True ,
224+ rule_priority = RulePriority ("1" ),
225+ ),
226+ Reason (
227+ rule_type = RuleType .filter ,
228+ rule_name = RuleName ("FilterRuleName1" ),
229+ rule_code = RuleCode ("FilterRuleCode1" ),
230+ rule_text = RuleText ("FilterRuleDescription1" ),
231+ matcher_matched = True ,
232+ rule_priority = RulePriority ("1" ),
233+ ),
234+ Reason (
235+ rule_type = RuleType .suppression ,
236+ rule_name = RuleName ("SuppressionRuleName1" ),
237+ rule_code = RuleCode ("SuppressionRuleCode1" ),
238+ rule_text = RuleText ("SuppressionRuleDescription1" ),
239+ matcher_matched = True ,
240+ rule_priority = RulePriority ("1" ),
241+ ),
242+ ]
243+ cohort_group_result = CohortGroupResult (
244+ status = Status .actionable ,
245+ cohort_code = "CohortCode1" ,
246+ description = "CohortDescription1" ,
247+ audit_rules = audit_rules ,
248+ reasons = audit_rules ,
249+ )
250+ iteration_result = IterationResult (
251+ status = Status .actionable ,
252+ status_text = StatusText (
253+ "Override text you should see"
254+ ), # value overwritten by get_eligibility_status prior to append_audit_condition being called.
255+ cohort_results = [cohort_group_result ],
256+ actions = suggested_actions ,
257+ )
258+ status_text_override = StatusText (
259+ "Override text you should see (in override field)"
260+ ) # Value in real run will exactly match status_text, differentiated here for testing.
261+ campaign_details = (CampaignID ("CampaignID1" ), CampaignVersion (123 ))
262+ matched_action_detail = MatchedActionDetail (
263+ campaign_config .RuleName ("RedirectRuleName1" ),
264+ campaign_config .RulePriority (1 ),
265+ suggested_actions ,
266+ status_text_override ,
267+ )
268+ iteration_result_summary = IterationResultSummary (
269+ iteration_result ,
270+ iteration ,
271+ campaign_details [0 ],
272+ campaign_details [1 ],
273+ {CohortLabel ("CohortCode1" ): cohort_group_result },
274+ )
275+
276+ # Initialise test data.
277+ with app .app_context ():
278+ g .audit_log = AuditEvent ()
279+
280+ AuditContext .append_audit_condition (condition_name , iteration_result_summary , matched_action_detail )
281+
282+ # Get audit_condition outputs.
283+ cond = g .audit_log .response .condition [0 ]
284+
285+ # Assert that override status text actually comes out.
286+ assert cond .status_text == "Override text you should see"
287+ assert cond .status_text_override == "Override text you should see (in override field)"
288+
289+
290+ def test_append_audit_condition_without_override_status_text (app ):
291+ # Trivial but explicit test of append_audit_condition being called where status_test_override is not provided.
292+ suggested_actions : list [SuggestedAction ] | None
293+ condition_name : ConditionName
294+ campaign_details : tuple [CampaignID | None , CampaignVersion | None ]
295+
296+ # Build dummy variables sufficient to be able to call append_audit_condition.
297+ suggested_actions = [
298+ SuggestedAction (
299+ internal_action_code = InternalActionCode ("InternalActionCode1" ),
300+ action_code = ActionCode ("ActionCode1" ),
301+ action_type = ActionType ("ActionType1" ),
302+ action_description = ActionDescription ("ActionDescription1" ),
303+ url_link = UrlLink (HttpUrl ("https://example.com/" )),
304+ url_label = UrlLabel ("ActionLabel1" ),
305+ )
306+ ]
307+ condition_name = ConditionName ("Condition1" )
308+ iteration = IterationFactory .build (version = 12345 )
309+ audit_rules = [
310+ Reason (
311+ rule_type = RuleType .redirect ,
312+ rule_name = RuleName ("RedirectRuleName1" ),
313+ rule_code = RuleCode ("RedirectRuleCode1" ),
314+ rule_text = RuleText ("RedirectRuleDescription1" ),
315+ matcher_matched = True ,
316+ rule_priority = RulePriority ("1" ),
317+ ),
318+ Reason (
319+ rule_type = RuleType .filter ,
320+ rule_name = RuleName ("FilterRuleName1" ),
321+ rule_code = RuleCode ("FilterRuleCode1" ),
322+ rule_text = RuleText ("FilterRuleDescription1" ),
323+ matcher_matched = True ,
324+ rule_priority = RulePriority ("1" ),
325+ ),
326+ Reason (
327+ rule_type = RuleType .suppression ,
328+ rule_name = RuleName ("SuppressionRuleName1" ),
329+ rule_code = RuleCode ("SuppressionRuleCode1" ),
330+ rule_text = RuleText ("SuppressionRuleDescription1" ),
331+ matcher_matched = True ,
332+ rule_priority = RulePriority ("1" ),
333+ ),
334+ ]
335+ cohort_group_result = CohortGroupResult (
336+ status = Status .actionable ,
337+ cohort_code = "CohortCode1" ,
338+ description = "CohortDescription1" ,
339+ audit_rules = audit_rules ,
340+ reasons = audit_rules ,
341+ )
342+ iteration_result = IterationResult (
343+ status = Status .actionable ,
344+ status_text = StatusText ("Default status text" ),
345+ cohort_results = [cohort_group_result ],
346+ actions = suggested_actions ,
347+ )
348+ status_text_override = None # Will default to None when not provided, made explicit here for testing.
349+ campaign_details = (CampaignID ("CampaignID1" ), CampaignVersion (123 ))
350+ matched_action_detail = MatchedActionDetail (
351+ campaign_config .RuleName ("RedirectRuleName1" ),
352+ campaign_config .RulePriority (1 ),
353+ suggested_actions ,
354+ status_text_override ,
355+ )
356+ iteration_result_summary = IterationResultSummary (
357+ iteration_result ,
358+ iteration ,
359+ campaign_details [0 ],
360+ campaign_details [1 ],
361+ {CohortLabel ("CohortCode1" ): cohort_group_result },
362+ )
363+
364+ # Initialise test data.
365+ with app .app_context ():
366+ g .audit_log = AuditEvent ()
367+
368+ AuditContext .append_audit_condition (condition_name , iteration_result_summary , matched_action_detail )
369+
370+ # Get audit_condition outputs.
371+ cond = g .audit_log .response .condition [0 ]
372+
373+ # Assert that override status text actually comes out.
374+ assert cond .status_text == "Default status text"
375+ assert cond .status_text_override is None
376+
377+
199378def test_should_append_audit_suppression_rules_for_actionable_status (app ):
200379 condition_name : ConditionName
201380 campaign_details : tuple [CampaignID | None , CampaignVersion | None ]
0 commit comments