Coverage for benefits/enrollment/analytics.py: 74%

21 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-21 19:31 +0000

1""" 

2The enrollment application: analytics implementation. 

3""" 

4 

5from benefits.core import analytics as core, models 

6 

7 

8class ReturnedEnrollmentEvent(core.Event): 

9 """Analytics event representing the end of transit processor enrollment request.""" 

10 

11 def __init__(self, request, status, error=None, enrollment_group=None, enrollment_method=models.EnrollmentMethods.DIGITAL): 

12 super().__init__(request, "returned enrollment", enrollment_method) 

13 if str(status).lower() in ("error", "retry", "success"): 13 ↛ 15line 13 didn't jump to line 15 because the condition on line 13 was always true

14 self.update_event_properties(status=status, error=error) 

15 if enrollment_group is not None: 15 ↛ 16line 15 didn't jump to line 16 because the condition on line 15 was never true

16 self.update_event_properties(enrollment_group=enrollment_group) 

17 

18 

19class FailedAccessTokenRequestEvent(core.Event): 

20 """Analytics event representing a failure to acquire an access token for card tokenization.""" 

21 

22 def __init__(self, request, status_code=None, enrollment_method=models.EnrollmentMethods.DIGITAL): 

23 super().__init__(request, "failed access token request", enrollment_method) 

24 if status_code is not None: 24 ↛ exitline 24 didn't return from function '__init__' because the condition on line 24 was always true

25 self.update_event_properties(status_code=status_code) 

26 

27 

28def returned_error(request, error, enrollment_method: str = models.EnrollmentMethods.DIGITAL): 

29 """Send the "returned enrollment" analytics event with an error status and message.""" 

30 core.send_event(ReturnedEnrollmentEvent(request, status="error", error=error, enrollment_method=enrollment_method)) 

31 

32 

33def returned_retry(request, enrollment_method: str = models.EnrollmentMethods.DIGITAL): 

34 """Send the "returned enrollment" analytics event with a retry status.""" 

35 core.send_event(ReturnedEnrollmentEvent(request, status="retry", enrollment_method=enrollment_method)) 

36 

37 

38def returned_success(request, enrollment_group, enrollment_method: str = models.EnrollmentMethods.DIGITAL): 

39 """Send the "returned enrollment" analytics event with a success status.""" 

40 core.send_event( 

41 ReturnedEnrollmentEvent( 

42 request, status="success", enrollment_group=enrollment_group, enrollment_method=enrollment_method 

43 ) 

44 ) 

45 

46 

47def failed_access_token_request(request, status_code=None, enrollment_method: str = models.EnrollmentMethods.DIGITAL): 

48 """Send the "failed access token request" analytics event with the response status code.""" 

49 core.send_event(FailedAccessTokenRequestEvent(request, status_code=status_code, enrollment_method=enrollment_method))