Skip to content

Commit bcf6346

Browse files
authored
Feat: Metro Mobility Wallet - Session class (#4027)
2 parents 1083fe8 + 01484cc commit bcf6346

2 files changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import logging
2+
3+
from django.http import HttpRequest
4+
5+
from benefits.core.models.enrollment import EnrollmentFlow, SystemName
6+
7+
logger = logging.getLogger(__name__)
8+
9+
10+
class Session:
11+
def __init__(self, request: HttpRequest):
12+
"""Initialize a new Metro Mobility Wallet session wrapper for this request"""
13+
14+
self.request = request
15+
self.session = request.session
16+
17+
@property
18+
def flow(self) -> EnrollmentFlow:
19+
return EnrollmentFlow.objects.filter(system_name=SystemName.METRO_MOBILITY_WALLET).first()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import pytest
2+
from django.http import HttpRequest
3+
4+
from benefits.core.models.enrollment import EnrollmentFlow, SystemName
5+
from benefits.metro_mobility_wallet.session import Session
6+
7+
8+
@pytest.mark.django_db
9+
class TestSession:
10+
@pytest.fixture
11+
def mock_request(self, mocker):
12+
request = mocker.MagicMock(spec=HttpRequest)
13+
request.session = {"session_id": 123}
14+
return request
15+
16+
@pytest.fixture
17+
def model_metro_EnrollmentFlow(self):
18+
return EnrollmentFlow.objects.create(system_name=SystemName.METRO_MOBILITY_WALLET)
19+
20+
def test_init(self, mock_request):
21+
session = Session(mock_request)
22+
assert session.request == mock_request
23+
assert session.session == mock_request.session
24+
25+
def test_flow_no_metro_flow(self, mock_request):
26+
assert EnrollmentFlow.objects.filter(system_name=SystemName.METRO_MOBILITY_WALLET).count() == 0
27+
28+
session = Session(mock_request)
29+
flow = session.flow
30+
31+
assert flow is None
32+
33+
def test_flow_metro_flow_exists(self, mock_request, model_metro_EnrollmentFlow):
34+
session = Session(mock_request)
35+
flow = session.flow
36+
37+
assert flow == model_metro_EnrollmentFlow

0 commit comments

Comments
 (0)