Skip to content

Commit f6ef2e0

Browse files
committed
wip
1 parent cffe894 commit f6ef2e0

File tree

2 files changed

+27
-56
lines changed

2 files changed

+27
-56
lines changed

pages/subject/subject_lynch_page.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ class SubjectPage(BasePage):
88

99
class Locators:
1010
SCREENING_STATUS_DROPDOWN = "Change Screening Status"
11+
SCREENING_REASON_SELECT = "#A_C_SSReasonForChange"
1112
REASON_DROPDOWN = "Reason"
1213
UPDATE_BUTTON = "Update Subject Data"
1314
DIAGNOSIS_TYPE_DROPDOWN = "Diagnosis Type"
1415
AGE_INPUT = "Age"
1516
DIAGNOSIS_DATE_INPUT = "Diagnosis Date"
1617
LAST_COLONOSCOPY_DATE_INPUT = "Last Colonoscopy Date"
1718
SUBMIT_BUTTON = "Submit"
19+
SCREENING_STATUS_SELECT = "#S_S_ScreeningStatus"
20+
UPDATE_BUTTON_INPUT = "input[type='button'][value='Update Subject Data']"
1821

1922
class StatusCodes:
2023
"""Status codes used in the screening status dropdown."""
@@ -51,7 +54,7 @@ def self_refer_subject(self) -> None:
5154
)
5255

5356
# Select reason: 'Reset seeking further data to Lynch Self-referral'
54-
self.page.get_by_label(self.Locators.REASON_DROPDOWN).select_option(
57+
self.page.get_by_label(self.Locators.SCREENING_REASON_SELECT).select_option(
5558
self.ReasonCodes.RESET_TO_SELF_REFERRAL
5659
)
5760

@@ -68,19 +71,17 @@ def set_seeking_further_data(self) -> None:
6871
)
6972

7073
# Select 'Seeking Further Data' from the screening status dropdown
71-
self.page.get_by_label(self.Locators.SCREENING_STATUS_DROPDOWN).select_option(
74+
self.page.locator(self.Locators.SCREENING_STATUS_SELECT).select_option(
7275
self.StatusCodes.SEEKING_FURTHER_DATA
7376
)
7477

7578
# Select 'Uncertified Death' as the reason
76-
self.page.get_by_label(self.Locators.REASON_DROPDOWN).select_option(
79+
self.page.locator(self.Locators.SCREENING_REASON_SELECT).select_option(
7780
self.ReasonCodes.UNCERTIFIED_DEATH
7881
)
7982

8083
# Click the update button
81-
self.safe_accept_dialog(
82-
self.page.get_by_role("button", name=self.Locators.UPDATE_BUTTON)
83-
)
84+
self.page.locator(self.Locators.UPDATE_BUTTON_INPUT).click()
8485

8586
def set_self_referral_screening_status(self) -> None:
8687
"""Set the screening status to 'Lynch Self-referral' with reason 'Reset seeking further data to Lynch Self-referral'."""

tests/test_lynch_self_referral_seeking_further_data_flow.py

Lines changed: 20 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import pytest
22
import logging
33
from playwright.sync_api import Page
4-
from classes.subject.subject import Subject
54
from classes.user.user import User
5+
from classes.subject.subject import Subject
66
from pages.logout.log_out_page import LogoutPage
7-
from utils.oracle.oracle import OracleDB
8-
from utils.oracle.subject_selection_query_builder import SubjectSelectionQueryBuilder
97
from utils.oracle.subject_selector import SubjectSelector
8+
from utils.oracle.oracle import OracleDB
109
from utils.user_tools import UserTools
1110
from pages.subject.subject_lynch_page import SubjectPage
1211
from utils.subject_assertion import subject_assertion
1312
from utils import screening_subject_page_searcher
13+
from utils.oracle.subject_selection_query_builder import SubjectSelectionQueryBuilder
1414

1515

1616
@pytest.mark.wip
@@ -40,13 +40,16 @@ def test_lynch_self_referral_seeking_further_data_flow(page: Page) -> None:
4040
# Retrieve user details and user object
4141
user_details = UserTools.retrieve_user(login_role)
4242

43-
# # TODO: When I receive Lynch diagnosis "EPCAM" for a new subject in my hub aged "75" with diagnosis date "3 years ago" and last colonoscopy date "2 years ago"
43+
# When I receive Lynch diagnosis "EPCAM" for a new subject in my hub aged "75" with diagnosis date "3 years ago" and last colonoscopy date "2 years ago"
44+
# TODO: What is involved in receiving an "EPCAM" diagnosis? Is it covered by this code?
4445
# Get or create a subject suitable for Lynch self-referral
4546
nhs_no = SubjectSelector.get_or_create_subject_for_lynch_self_referral(
4647
screening_centre=user_details["hub_code"],
4748
base_age=75,
4849
)
4950

51+
OracleDB().exec_bcss_timed_events(nhs_number=nhs_no)
52+
5053
logging.info(
5154
"[SUBJECT CREATED IN DB] created subject in the database with no screening history who is eligible to self refer"
5255
)
@@ -57,8 +60,9 @@ def test_lynch_self_referral_seeking_further_data_flow(page: Page) -> None:
5760
# When I view the subject
5861
screening_subject_page_searcher.navigate_to_subject_summary_page(page, nhs_no)
5962
logging.info(f"[UI ACTION] Navigated to subject summary page for {nhs_no}")
60-
63+
6164
# When I self refer the subject
65+
# TODO: This step may not be needed as the created subject is already has a status of "Self-referral"
6266
subject_page.self_refer_subject()
6367
logging.info("[UI ACTION] Self-referred the subject")
6468

@@ -119,6 +123,17 @@ def test_lynch_self_referral_seeking_further_data_flow(page: Page) -> None:
119123
"surveillance due date reason": "Null",
120124
}
121125

126+
# The below lines down to logging.info are just for debug purposes to show the actual DB row
127+
# Remove them once the test is stable
128+
query, bind_vars = SubjectSelectionQueryBuilder().build_subject_selection_query(
129+
criteria={"nhs number": nhs_no},
130+
user=User(),
131+
subject=Subject(),
132+
subjects_to_retrieve=1,
133+
)
134+
df = OracleDB().execute_query(query, bind_vars)
135+
logging.info(f"[DEBUG] Subject DB row:\n{df.to_dict(orient='records')}")
136+
122137
subject_assertion(nhs_no, seeking_further_data_criteria)
123138

124139
# When I set the subject from Seeking Further Data back to "Lynch Self-referral"
@@ -151,48 +166,3 @@ def test_lynch_self_referral_seeking_further_data_flow(page: Page) -> None:
151166

152167
LogoutPage(page).log_out()
153168
logging.info("[TEST END] test_lynch_self_referral_seeking_further_data_flow")
154-
155-
156-
# Helper Functions - TODO: move to a utils file later
157-
def prepare_subject_with_lynch_diagnosis(
158-
page: Page,
159-
user: User,
160-
nhs_no: str,
161-
age: int,
162-
diagnosis_date: str,
163-
last_colonoscopy_date: str | None = None,
164-
) -> str:
165-
"""
166-
Helper function to receive a Lynch diagnosis for a new subject.
167-
Args:
168-
page (Page): Playwright Page object for browser interaction.
169-
user (User): User object representing the logged-in user.
170-
age (int): Age of the subject.
171-
diagnosis_date (str): Date of the Lynch diagnosis.
172-
last_colonoscopy_date (str | None): Date of the last colonoscopy, if applicable.
173-
"""
174-
175-
criteria = {"nhs number": nhs_no}
176-
177-
query, bind_vars = SubjectSelectionQueryBuilder().build_subject_selection_query(
178-
criteria=criteria,
179-
user=user,
180-
subject=Subject(),
181-
subjects_to_retrieve=1,
182-
)
183-
184-
nhs_no_df = OracleDB().execute_query(query, bind_vars)
185-
if nhs_no_df.empty:
186-
raise ValueError("[SUBJECT SELECTION] No subject found matching criteria.")
187-
188-
nhs_no = nhs_no_df["subject_nhs_number"].iloc[0]
189-
logging.info(f"[SUBJECT SELECTED] NHS number: {nhs_no}")
190-
191-
subject_page = SubjectPage(page)
192-
subject_page.receive_lynch_diagnosis(
193-
diagnosis_type=SubjectPage.TestData.lynch_diagnosis_type,
194-
age=age,
195-
diagnosis_date=diagnosis_date,
196-
last_colonoscopy_date=last_colonoscopy_date,
197-
)
198-
return nhs_no

0 commit comments

Comments
 (0)