Skip to content

Commit d57aaba

Browse files
Merge pull request #252 from NHSDigital/programme-types
Filter programmes by team's programme_types from JWT
2 parents 69288b6 + 31f21a8 commit d57aaba

File tree

5 files changed

+41
-1
lines changed

5 files changed

+41
-1
lines changed

mavis/reporting/api_client/client.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,20 @@ def get_variables(self) -> list[dict]:
8888
]
8989

9090
def get_programmes(self) -> list[dict]:
91-
return [
91+
all_programmes = [
9292
{"value": "flu", "text": "Flu"},
9393
{"value": "hpv", "text": "HPV"},
9494
{"value": "menacwy", "text": "MenACWY"},
9595
{"value": "td_ipv", "text": "Td/IPV"},
9696
]
9797

98+
programme_types = (self.session or {}).get("programme_types", [])
99+
100+
if not programme_types:
101+
return all_programmes
102+
103+
return [p for p in all_programmes if p["value"] in programme_types]
104+
98105
def get_year_groups(self) -> list[dict]:
99106
return [
100107
{"value": "0", "text": "Reception"},

mavis/reporting/helpers/auth_helper.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def log_user_in(data: dict[str, Any], session: SessionMixin):
8989
session["user_id"] = jwt_data["user"]["id"]
9090
session["jwt"] = minimal_jwt(jwt_data)
9191
session["user_nav"] = data["user_nav"]
92+
session["programme_types"] = jwt_data["programme_types"]
9293

9394

9495
def minimal_jwt(data):

tests/api_client/test_client.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,28 @@ def test_td_ipv_returns_years_9_to_11(self, api_client):
8686
def test_unknown_programme_returns_empty_list(self, api_client):
8787
result = api_client.get_year_groups_for_programme("unknown")
8888
assert result == []
89+
90+
91+
class TestGetProgrammes:
92+
def test_returns_all_when_no_programme_types(self, app):
93+
client = MavisApiClient(
94+
app=app, session={"jwt": "x", "cis2_info": {}, "programme_types": []}
95+
)
96+
result = client.get_programmes()
97+
values = [p["value"] for p in result]
98+
assert values == ["flu", "hpv", "menacwy", "td_ipv"]
99+
100+
def test_filters_by_programme_types(self, app):
101+
client = MavisApiClient(
102+
app=app,
103+
session={"jwt": "x", "programme_types": ["flu", "hpv"]},
104+
)
105+
result = client.get_programmes()
106+
values = [p["value"] for p in result]
107+
assert values == ["flu", "hpv"]
108+
109+
def test_returns_all_when_cis2_info_missing(self, app):
110+
client = MavisApiClient(app=app, session={"jwt": "x"})
111+
result = client.get_programmes()
112+
values = [p["value"] for p in result]
113+
assert values == ["flu", "hpv", "menacwy", "td_ipv"]

tests/helpers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def mock_user_info():
3333
"team": {"name": "SAIS Team 1"},
3434
"workgroups": ["r1l"],
3535
},
36+
"programme_types": ["flu", "hpv"],
3637
},
3738
"user_nav": {
3839
"items": [

tests/helpers/test_auth_helper.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,9 @@ def test_log_user_in_sets_jwt(logged_in_session, user_data):
4545
== user_data["jwt_data"]["user"]["reporting_api_session_token"]
4646
)
4747
assert jwt_payload["data"]["cis2_info"] == user_data["jwt_data"]["cis2_info"]
48+
49+
50+
def test_log_user_in_sets_programme_types(logged_in_session, user_data):
51+
assert (
52+
logged_in_session["programme_types"] == user_data["jwt_data"]["programme_types"]
53+
)

0 commit comments

Comments
 (0)