Skip to content

Commit 44f8a61

Browse files
committed
chore(in-person): remove redundant view and imports
LittlepayEnrollmentView replaces the in-person enrollment view function, so this cleanup removes code that is not needed anymore.
1 parent 1554b8f commit 44f8a61

2 files changed

Lines changed: 0 additions & 210 deletions

File tree

benefits/in_person/views.py

Lines changed: 0 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import logging
22

3-
import sentry_sdk
43
from django.contrib.admin import site as admin_site
54
from django.shortcuts import redirect
65
from django.template.response import TemplateResponse
@@ -11,9 +10,7 @@
1110
from benefits.core import models, session
1211
from benefits.eligibility import analytics as eligibility_analytics
1312
from benefits.enrollment import analytics as enrollment_analytics
14-
from benefits.enrollment.enrollment import Status
1513
from benefits.enrollment.views import IndexView
16-
from benefits.enrollment_littlepay.enrollment import get_card_types_for_js, enroll
1714
from benefits.enrollment_littlepay.session import Session as LittlepaySession
1815
from benefits.enrollment_littlepay.views import TokenView, IndexView as LittlepayIndexView
1916
from benefits.enrollment_switchio.session import Session as SwitchioSession
@@ -119,102 +116,6 @@ def get_context_data(self, **kwargs):
119116
return context
120117

121118

122-
def enrollment(request):
123-
"""View handler for the in-person enrollment page."""
124-
# POST back after transit processor form, process card token
125-
if request.method == "POST":
126-
form = forms.CardTokenizeSuccessForm(request.POST)
127-
if not form.is_valid():
128-
raise Exception("Invalid card token form")
129-
130-
flow = session.flow(request)
131-
card_token = form.cleaned_data.get("card_token")
132-
status, exception = enroll(request, card_token)
133-
134-
match (status):
135-
case Status.SUCCESS:
136-
agency = session.agency(request)
137-
expiry = session.enrollment_expiry(request)
138-
verified_by = f"{request.user.first_name} {request.user.last_name}"
139-
event = models.EnrollmentEvent.objects.create(
140-
transit_agency=agency,
141-
enrollment_flow=flow,
142-
enrollment_method=models.EnrollmentMethods.IN_PERSON,
143-
verified_by=verified_by,
144-
expiration_datetime=expiry,
145-
)
146-
event.save()
147-
enrollment_analytics.returned_success(
148-
request, flow.group_id, enrollment_method=models.EnrollmentMethods.IN_PERSON
149-
)
150-
return redirect(routes.IN_PERSON_ENROLLMENT_SUCCESS)
151-
152-
case Status.SYSTEM_ERROR:
153-
enrollment_analytics.returned_error(
154-
request, str(exception), enrollment_method=models.EnrollmentMethods.IN_PERSON
155-
)
156-
sentry_sdk.capture_exception(exception)
157-
return redirect(routes.IN_PERSON_ENROLLMENT_SYSTEM_ERROR)
158-
159-
case Status.EXCEPTION:
160-
enrollment_analytics.returned_error(
161-
request, str(exception), enrollment_method=models.EnrollmentMethods.IN_PERSON
162-
)
163-
sentry_sdk.capture_exception(exception)
164-
return redirect(routes.IN_PERSON_SERVER_ERROR)
165-
166-
case Status.REENROLLMENT_ERROR:
167-
enrollment_analytics.returned_error(
168-
request, "Re-enrollment error.", enrollment_method=models.EnrollmentMethods.IN_PERSON
169-
)
170-
return redirect(routes.IN_PERSON_ENROLLMENT_REENROLLMENT_ERROR)
171-
# GET enrollment index
172-
else:
173-
agency = session.agency(request)
174-
175-
tokenize_retry_form = forms.CardTokenizeFailForm(routes.IN_PERSON_ENROLLMENT_RETRY, "form-card-tokenize-fail-retry")
176-
tokenize_server_error_form = forms.CardTokenizeFailForm(
177-
routes.IN_PERSON_SERVER_ERROR, "form-card-tokenize-fail-server-error"
178-
)
179-
tokenize_system_error_form = forms.CardTokenizeFailForm(
180-
routes.IN_PERSON_ENROLLMENT_SYSTEM_ERROR, "form-card-tokenize-fail-system-error"
181-
)
182-
tokenize_success_form = forms.CardTokenizeSuccessForm(
183-
action_url=routes.IN_PERSON_ENROLLMENT, auto_id=True, label_suffix=""
184-
)
185-
186-
context = {
187-
**admin_site.each_context(request),
188-
"forms": [tokenize_retry_form, tokenize_server_error_form, tokenize_system_error_form, tokenize_success_form],
189-
"cta_button": "tokenize_card",
190-
"enrollment_method": models.EnrollmentMethods.IN_PERSON,
191-
"token_field": "card_token",
192-
"form_retry": tokenize_retry_form.id,
193-
"form_server_error": tokenize_server_error_form.id,
194-
"form_success": tokenize_success_form.id,
195-
"form_system_error": tokenize_system_error_form.id,
196-
"title": f"{agency.long_name} | In-person enrollment | {admin_site.site_title}",
197-
"card_types": get_card_types_for_js(),
198-
}
199-
200-
match agency.littlepay_config.environment:
201-
case models.Environment.QA.value:
202-
url = "https://verify.qa.littlepay.com/assets/js/littlepay.min.js"
203-
card_tokenize_env = "https://verify.qa.littlepay.com"
204-
case models.Environment.PROD.value:
205-
url = "https://verify.littlepay.com/assets/js/littlepay.min.js"
206-
card_tokenize_env = "https://verify.littlepay.com"
207-
case _:
208-
raise ValueError("Unrecognized environment value")
209-
210-
transit_processor_context = dict(
211-
name="Littlepay", website="https://littlepay.com", card_tokenize_url=url, card_tokenize_env=card_tokenize_env
212-
)
213-
context.update({"transit_processor": transit_processor_context})
214-
215-
return TemplateResponse(request, "in_person/enrollment/index_littlepay.html", context)
216-
217-
218119
def reenrollment_error(request):
219120
"""View handler for a re-enrollment attempt that is not yet within the re-enrollment window."""
220121

tests/pytest/in_person/test_views.py

Lines changed: 0 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44

55
from benefits.core import models
6-
from benefits.enrollment.enrollment import Status
76
from benefits.in_person import forms
87
import benefits.in_person.views as views
98
from benefits.routes import routes
@@ -160,116 +159,6 @@ def test_get_context_data(self, view, app_request):
160159
assert "title" in context
161160

162161

163-
@pytest.mark.django_db
164-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "model_LittlepayConfig")
165-
def test_enrollment_logged_in_get(admin_client):
166-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
167-
168-
response = admin_client.get(path)
169-
assert response.status_code == 200
170-
assert response.template_name == "in_person/enrollment/index.html"
171-
assert "forms" in response.context_data
172-
assert "cta_button" in response.context_data
173-
assert "token_field" in response.context_data
174-
assert "form_retry" in response.context_data
175-
assert "form_success" in response.context_data
176-
assert "card_types" in response.context_data
177-
178-
# not supporting internationalization in in_person app yet
179-
assert "overlay_language" not in response.context_data
180-
181-
182-
@pytest.mark.django_db
183-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "mocked_session_eligible")
184-
def test_enrollment_post_invalid_form(admin_client, invalid_form_data):
185-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
186-
187-
with pytest.raises(Exception, match=r"form"):
188-
admin_client.post(path, invalid_form_data)
189-
190-
191-
@pytest.mark.django_db
192-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "model_EnrollmentFlow", "model_LittlepayGroup")
193-
def test_enrollment_post_valid_form_success(
194-
mocker,
195-
admin_client,
196-
card_tokenize_form_data,
197-
mocked_eligibility_analytics_module,
198-
mocked_enrollment_analytics_module,
199-
model_TransitAgency,
200-
model_EnrollmentFlow,
201-
model_User,
202-
):
203-
mocker.patch("benefits.in_person.views.enroll", return_value=(Status.SUCCESS, None))
204-
spy = mocker.spy(views.models.EnrollmentEvent.objects, "create")
205-
206-
# force the model_User to be the logged in user
207-
# e.g. the TransitAgency staff person assisting this in-person enrollment
208-
admin_client.force_login(model_User)
209-
210-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
211-
response = admin_client.post(path, card_tokenize_form_data)
212-
213-
spy.assert_called_once_with(
214-
transit_agency=model_TransitAgency,
215-
enrollment_flow=model_EnrollmentFlow,
216-
enrollment_method=models.EnrollmentMethods.IN_PERSON,
217-
verified_by=f"{model_User.first_name} {model_User.last_name}",
218-
expiration_datetime=None,
219-
)
220-
221-
assert response.status_code == 302
222-
assert response.url == reverse(routes.IN_PERSON_ENROLLMENT_SUCCESS)
223-
mocked_enrollment_analytics_module.returned_success.assert_called_once()
224-
225-
226-
@pytest.mark.django_db
227-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "model_EnrollmentFlow")
228-
def test_enrollment_post_valid_form_system_error(
229-
mocker, admin_client, card_tokenize_form_data, mocked_enrollment_analytics_module, mocked_sentry_sdk_module
230-
):
231-
mocker.patch("benefits.in_person.views.enroll", return_value=(Status.SYSTEM_ERROR, None))
232-
233-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
234-
response = admin_client.post(path, card_tokenize_form_data)
235-
236-
assert response.status_code == 302
237-
assert response.url == reverse(routes.IN_PERSON_ENROLLMENT_SYSTEM_ERROR)
238-
mocked_enrollment_analytics_module.returned_error.assert_called_once()
239-
mocked_sentry_sdk_module.capture_exception.assert_called_once()
240-
241-
242-
@pytest.mark.django_db
243-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "model_EnrollmentFlow")
244-
def test_enrollment_post_valid_form_exception(
245-
mocker, admin_client, card_tokenize_form_data, mocked_enrollment_analytics_module, mocked_sentry_sdk_module
246-
):
247-
mocker.patch("benefits.in_person.views.enroll", return_value=(Status.EXCEPTION, None))
248-
249-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
250-
response = admin_client.post(path, card_tokenize_form_data)
251-
252-
assert response.status_code == 302
253-
assert response.url == reverse(routes.IN_PERSON_SERVER_ERROR)
254-
mocked_enrollment_analytics_module.returned_error.assert_called_once()
255-
mocked_sentry_sdk_module.capture_exception.assert_called_once()
256-
257-
258-
@pytest.mark.django_db
259-
@pytest.mark.usefixtures("mocked_session_agency", "mocked_session_flow", "model_EnrollmentFlow")
260-
def test_enrollment_post_valid_form_reenrollment_error(
261-
mocker, admin_client, card_tokenize_form_data, mocked_enrollment_analytics_module
262-
):
263-
mocker.patch("benefits.in_person.views.enroll", return_value=(Status.REENROLLMENT_ERROR, None))
264-
265-
path = reverse(routes.IN_PERSON_ENROLLMENT_LITTLEPAY_INDEX)
266-
response = admin_client.post(path, card_tokenize_form_data)
267-
268-
assert response.status_code == 302
269-
assert response.url == reverse(routes.IN_PERSON_ENROLLMENT_REENROLLMENT_ERROR)
270-
mocked_enrollment_analytics_module.returned_error.assert_called_once()
271-
272-
273162
@pytest.mark.django_db
274163
@pytest.mark.usefixtures("mocked_session_flow", "mocked_session_agency")
275164
def test_reenrollment_error(admin_client):

0 commit comments

Comments
 (0)