Skip to content

Commit 36fdb2b

Browse files
Merge pull request #1141 from NHSDigital/gillick-vaccs-day-b
Added test for gillick consent and self consent on the same day and next
2 parents 849c973 + 444f7ff commit 36fdb2b

3 files changed

Lines changed: 116 additions & 26 deletions

File tree

mavis/test/constants.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,20 @@ def offline_sheet_name(self) -> str:
301301
}
302302
return offline_name_map[self]
303303

304+
def get_default_vaccine(self, consent_option: ConsentOption) -> "Vaccine":
305+
"""Get the default vaccine for this programme and consent option."""
306+
from mavis.test.constants import Vaccine # noqa: PLC0415
307+
308+
vaccine_mapping = {
309+
self.FLU: Vaccine.SEQUIRUS
310+
if consent_option == ConsentOption.INJECTION
311+
else Vaccine.FLUENZ,
312+
self.HPV: Vaccine.GARDASIL_9,
313+
self.MENACWY: Vaccine.NIMENRIX,
314+
self.TD_IPV: Vaccine.REVAXIS,
315+
}
316+
return vaccine_mapping[self]
317+
304318

305319
class Vaccine(StrEnum):
306320
# Flu

mavis/test/pages/utils.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,22 @@
33
from mavis.test.constants import (
44
MAVIS_NOTE_LENGTH_LIMIT,
55
ConsentMethod,
6+
ConsentOption,
67
Programme,
78
)
89
from mavis.test.data_models import Child, School, VaccinationRecord
910
from mavis.test.pages import (
1011
AddSessionWizardPage,
1112
DashboardPage,
13+
GillickCompetencePage,
1214
NurseConsentWizardPage,
1315
RecordVaccinationWizardPage,
1416
SessionsChildrenPage,
1517
SessionsOverviewPage,
1618
SessionsPatientPage,
1719
SessionsSearchPage,
1820
)
19-
from mavis.test.utils import generate_random_string
21+
from mavis.test.utils import expect_alert_text, generate_random_string
2022

2123

2224
def schedule_school_session_if_needed( # noqa: PLR0913
@@ -85,3 +87,34 @@ def record_nurse_consent_and_vaccination(
8587
RecordVaccinationWizardPage(page).record_vaccination(
8688
vaccination_record, notes=notes
8789
)
90+
91+
92+
def record_gillick_competence_and_self_consent(
93+
page: Page,
94+
child: Child,
95+
programme: Programme,
96+
consent_option: ConsentOption,
97+
*,
98+
is_competent: bool = True,
99+
) -> None:
100+
"""Record Gillick competence assessment and child self-consent.
101+
102+
Args:
103+
page: The Playwright page object.
104+
child: The child to assess and record consent for.
105+
programme: The vaccination programme.
106+
consent_option: The consent option (injection, nasal spray, etc.).
107+
is_competent: Whether the child is assessed as Gillick competent.
108+
109+
"""
110+
sessions_patient_page = SessionsPatientPage(page)
111+
gillick_competence_page = GillickCompetencePage(page)
112+
nurse_consent_wizard_page = NurseConsentWizardPage(page)
113+
114+
sessions_patient_page.click_assess_gillick_competence()
115+
gillick_competence_page.add_gillick_competence(is_competent=is_competent)
116+
117+
sessions_patient_page.click_record_a_new_consent_response()
118+
nurse_consent_wizard_page.select_gillick_competent_child()
119+
nurse_consent_wizard_page.record_child_given_consent(programme, consent_option)
120+
expect_alert_text(page, f"Consent recorded for {child!s}")

tests/test_self_consent.py

Lines changed: 68 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,23 @@
88
Programme,
99
)
1010
from mavis.test.data import ClassFileMapping
11+
from mavis.test.data_models import VaccinationRecord
1112
from mavis.test.pages import (
13+
ChildProgrammePage,
14+
ChildRecordPage,
15+
ChildrenSearchPage,
1216
DashboardPage,
1317
GillickCompetencePage,
1418
ImportRecordsWizardPage,
1519
NurseConsentWizardPage,
20+
RecordVaccinationWizardPage,
1621
SchoolChildrenPage,
1722
SchoolsSearchPage,
1823
SessionsChildrenPage,
1924
SessionsOverviewPage,
2025
SessionsPatientPage,
2126
SessionsPatientSessionActivityPage,
27+
SessionsRecordVaccinationsPage,
2228
SessionsSearchPage,
2329
)
2430
from mavis.test.pages.utils import schedule_school_session_if_needed
@@ -69,57 +75,94 @@ def session_with_child_for_programme(
6975
indirect=True,
7076
ids=lambda v: f"{v[0]}-{v[1]}",
7177
)
72-
def test_gillick(session_with_child_for_programme, children, schools, page):
78+
def test_gillick_competence_consent_and_vaccination(
79+
session_with_child_for_programme, children, schools, page, add_vaccine_batch
80+
):
7381
"""
74-
Test: Add and edit Gillick competence assessment for a child.
82+
Test: Record Gillick competence, child self-consent, and vaccination.
7583
7684
Steps:
77-
1. Open the session for the school and programme.
78-
2. Navigate to Gillick competence assessment for the child.
79-
3. Add a Gillick competence assessment as competent.
80-
4. Edit the assessment to mark as not competent.
85+
1. Open the session and navigate to the child's programme tab.
86+
2. Assess Gillick competence as competent.
87+
3. Record child self-consent.
88+
4. Verify Gillick competence status appears on offline sheet.
89+
5. Set session in progress and register child as attending.
90+
6. Add vaccine batch and record vaccination for the child.
91+
7. Verify vaccination is recorded and appears in child record.
8192
8293
Expectations:
83-
- Gillick competence status is updated and reflected for the child.
94+
- Gillick competence is recorded as competent and verified.
95+
- Child self-consent is recorded successfully.
96+
- Vaccination is recorded for the child and appears in their record.
8497
"""
85-
86-
programme, _ = session_with_child_for_programme
98+
programme, consent_option = session_with_child_for_programme
8799
child = children[programme.group][0]
88100
school = schools[programme.group][0]
89101

102+
vaccine = programme.get_default_vaccine(consent_option)
103+
batch_name = add_vaccine_batch(vaccine)
104+
90105
dashboard_page = DashboardPage(page)
91-
gillick_competence_page = GillickCompetencePage(page)
92-
sessions_children_page = SessionsChildrenPage(page)
93-
sessions_overview_page = SessionsOverviewPage(page)
94-
sessions_patient_page = SessionsPatientPage(page)
95-
sessions_search_page = SessionsSearchPage(page)
106+
dashboard_page.header.click_mavis()
107+
dashboard_page.click_sessions()
108+
SessionsSearchPage(page).click_session_for_programmes(school, [programme])
96109

110+
sessions_overview_page = SessionsOverviewPage(page)
97111
sessions_overview_page.tabs.click_children_tab()
112+
113+
sessions_children_page = SessionsChildrenPage(page)
98114
sessions_children_page.search.search_and_click_child(child)
115+
116+
sessions_patient_page = SessionsPatientPage(page)
99117
sessions_patient_page.click_programme_tab(programme)
100118
sessions_patient_page.click_assess_gillick_competence()
119+
120+
gillick_competence_page = GillickCompetencePage(page)
101121
gillick_competence_page.add_gillick_competence(is_competent=True)
102122

103-
sessions_children_page.header.click_mavis()
123+
sessions_patient_page.click_record_a_new_consent_response()
124+
125+
nurse_consent_wizard_page = NurseConsentWizardPage(page)
126+
nurse_consent_wizard_page.select_gillick_competent_child()
127+
nurse_consent_wizard_page.record_child_given_consent(programme, consent_option)
128+
expect_alert_text(page, f"Consent recorded for {child!s}")
129+
130+
sessions_patient_page.header.click_mavis()
104131
dashboard_page.click_sessions()
105-
sessions_search_page.click_session_for_programmes(school, [programme])
132+
SessionsSearchPage(page).click_session_for_programmes(school, [programme])
106133
sessions_overview_page.verify_offline_sheet_gillick_competence(
107134
child, competent=True
108135
)
109136

137+
sessions_overview_page.click_set_session_in_progress_for_today()
110138
sessions_overview_page.tabs.click_children_tab()
111-
sessions_children_page.search.search_and_click_child(child)
112-
sessions_patient_page.click_programme_tab(programme)
113-
sessions_patient_page.click_edit_gillick_competence()
114-
gillick_competence_page.edit_gillick_competence(is_competent=False)
139+
sessions_children_page.register_child_as_attending(child)
115140

116-
sessions_children_page.header.click_mavis()
117-
dashboard_page.click_sessions()
118-
sessions_search_page.click_session_for_programmes(school, [programme])
119-
sessions_overview_page.verify_offline_sheet_gillick_competence(
120-
child, competent=False
141+
sessions_children_page.tabs.click_record_vaccinations_tab()
142+
sessions_record_vaccinations_page = SessionsRecordVaccinationsPage(page)
143+
sessions_record_vaccinations_page.search.search_and_click_child(child)
144+
145+
vaccination_record = VaccinationRecord(child, programme, batch_name, consent_option)
146+
sessions_patient_page.set_up_vaccination(vaccination_record)
147+
148+
record_vaccination_wizard_page = RecordVaccinationWizardPage(page)
149+
record_vaccination_wizard_page.record_vaccination(
150+
vaccination_record, test_recording_twice=True
121151
)
122152

153+
record_vaccination_wizard_page.header.click_mavis()
154+
dashboard_page.click_children()
155+
156+
children_search_page = ChildrenSearchPage(page)
157+
children_search_page.search.search_for_child_name_with_all_filters(str(child))
158+
children_search_page.search.click_child(child)
159+
160+
child_record_page = ChildRecordPage(page)
161+
child_record_page.click_programme(programme)
162+
163+
child_programme_page = ChildProgrammePage(page)
164+
child_programme_page.verify_one_vaccination_appears()
165+
123166

124167
@issue("MAV-955")
125168
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)