Coverage for benefits / enrollment / analytics.py: 98%
30 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-01 15:39 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-01 15:39 +0000
1"""
2The enrollment application: analytics implementation.
3"""
5from benefits.core import analytics as core, models
8class ReturnedEnrollmentEvent(core.Event):
9 """Analytics event representing the end of transit processor enrollment request."""
11 def __init__(
12 self,
13 request,
14 status,
15 agency,
16 enrollment_group,
17 transit_processor,
18 error=None,
19 enrollment_method=models.EnrollmentMethods.DIGITAL,
20 extra_claims=None,
21 card_category=None,
22 card_scheme=None,
23 ):
24 super().__init__(request, "returned enrollment", enrollment_method, agency)
25 if str(status).lower() in ("error", "retry", "success"): 25 ↛ exitline 25 didn't return from function '__init__' because the condition on line 25 was always true
26 self.update_event_properties(status=status)
27 self.update_event_properties(enrollment_group=enrollment_group)
28 self.update_event_properties(transit_processor=transit_processor)
29 if error is not None:
30 self.update_event_properties(error=error)
31 if extra_claims is not None:
32 self.update_event_properties(extra_claims=extra_claims)
33 if card_category is not None:
34 self.update_event_properties(card_category=card_category)
35 if card_scheme is not None:
36 self.update_event_properties(card_scheme=card_scheme)
39class FailedPretokenizationRequestEvent(core.Event):
40 """Analytics event representing a failure to do the pre-tokenization step for card tokenization."""
42 def __init__(self, request, transit_processor, status_code=None, enrollment_method=models.EnrollmentMethods.DIGITAL):
43 super().__init__(request, "failed pre-tokenization request", enrollment_method)
44 self.update_event_properties(transit_processor=transit_processor)
45 if status_code is not None:
46 self.update_event_properties(status_code=status_code)
49def returned_error(
50 request,
51 error,
52 agency,
53 enrollment_group,
54 transit_processor,
55 enrollment_method: str = models.EnrollmentMethods.DIGITAL,
56):
57 """Send the "returned enrollment" analytics event with an error status and message."""
58 core.send_event(
59 ReturnedEnrollmentEvent(
60 request,
61 status="error",
62 agency=agency,
63 enrollment_group=enrollment_group,
64 transit_processor=transit_processor,
65 error=error,
66 enrollment_method=enrollment_method,
67 )
68 )
71def returned_retry(
72 request,
73 agency,
74 enrollment_group,
75 transit_processor,
76 enrollment_method: str = models.EnrollmentMethods.DIGITAL,
77):
78 """Send the "returned enrollment" analytics event with a retry status."""
79 core.send_event(
80 ReturnedEnrollmentEvent(
81 request,
82 status="retry",
83 agency=agency,
84 enrollment_group=enrollment_group,
85 transit_processor=transit_processor,
86 enrollment_method=enrollment_method,
87 )
88 )
91def returned_success(
92 request,
93 agency,
94 enrollment_group,
95 transit_processor,
96 enrollment_method: str = models.EnrollmentMethods.DIGITAL,
97 extra_claims=None,
98 card_scheme=None,
99 card_category=None,
100):
101 """Send the "returned enrollment" analytics event with a success status."""
102 core.send_event(
103 ReturnedEnrollmentEvent(
104 request,
105 status="success",
106 agency=agency,
107 enrollment_group=enrollment_group,
108 transit_processor=transit_processor,
109 enrollment_method=enrollment_method,
110 extra_claims=extra_claims,
111 card_scheme=card_scheme,
112 card_category=card_category,
113 )
114 )
117def failed_pretokenization_request(
118 request, transit_processor, status_code=None, enrollment_method: str = models.EnrollmentMethods.DIGITAL
119):
120 """Send the "failed pre-tokenization request" analytics event with the response status code."""
121 core.send_event(
122 FailedPretokenizationRequestEvent(
123 request, transit_processor=transit_processor, status_code=status_code, enrollment_method=enrollment_method
124 )
125 )