Skip to content

Commit 41e30e8

Browse files
committed
addressing sonarqube issues
1 parent 7ad7c3e commit 41e30e8

File tree

1 file changed

+69
-58
lines changed

1 file changed

+69
-58
lines changed

tests/regression/subject_diagnosis_date/test_subject_episodes_diagnosis_date.py

Lines changed: 69 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
import time
3-
from typing import Optional
3+
import logging
4+
from typing import Optional, Callable
45
from datetime import datetime
56
from datetime import date, timedelta
67
from playwright.sync_api import Page, expect
@@ -18,6 +19,8 @@
1819
from classes.subject import Subject
1920
from pages.base_page import BasePage
2021

22+
logger = logging.getLogger(__name__)
23+
2124

2225
# Helpers
2326
def compose_diagnosis_text_with_reason(
@@ -67,6 +70,44 @@ def prepare_subject_for_test(
6770
return nhs_number
6871

6972

73+
def assert_diagnosis_event_details(
74+
event_details: dict,
75+
expected_status_not: Optional[str],
76+
expected_event: str = "Record Diagnosis Date",
77+
expected_reason: Optional[str] = None,
78+
assert_today: bool = True,
79+
log: Optional[Callable[[str], None]] = None,
80+
) -> None:
81+
if log:
82+
log(f"Checking event: {event_details['event']}")
83+
log(f"Checking status: {event_details.get('latest_event_status', '')}")
84+
log(f"Checking item: {event_details['item']}")
85+
86+
if expected_status_not is not None:
87+
assert expected_status_not not in event_details.get(
88+
"latest_event_status", ""
89+
), f"Expected status '{expected_status_not}' to be absent, but got: {event_details.get('latest_event_status')}"
90+
91+
assert event_details["event"] == expected_event
92+
93+
if expected_reason is not None:
94+
assert (
95+
expected_reason in event_details["item"]
96+
), f"Expected reason '{expected_reason}' to be part of item, but got: {event_details['item']}"
97+
else:
98+
assert (
99+
event_details.get("diagnosis_reason") is None
100+
), f"Expected 'diagnosis_reason' to be None, but got: {event_details.get('diagnosis_reason')}"
101+
102+
assert "Diag Date :" in event_details["item"]
103+
104+
if assert_today:
105+
today_formatted = date.today().strftime("%d %b %Y")
106+
assert (
107+
today_formatted in event_details["item"]
108+
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
109+
110+
70111
# Scenario 1
71112
@pytest.mark.regression
72113
@pytest.mark.vpn_required
@@ -383,16 +424,12 @@ def test_amend_diagnosis_date_with_reason(page: Page):
383424
# Step 5: Assertions
384425
subject_event_status_s9 = SubjectEpisodeEventsAndNotesPage(page)
385426
event_details = subject_event_status_s9.get_latest_event_details()
386-
assert "A51" not in event_details.get("latest_event_status", "")
387-
assert event_details["event"] == "Record Diagnosis Date"
388-
assert (
389-
amend_reason in event_details["item"]
390-
), f"Expected reason '{amend_reason}' to be part of item, but got: {event_details['item']}"
391-
assert "Diag Date :" in event_details["item"]
392-
today_formatted = date.today().strftime("%d %b %Y") # "21 Jul 2025"
393-
assert (
394-
today_formatted in event_details["item"]
395-
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
427+
assert_diagnosis_event_details(
428+
event_details,
429+
expected_status_not="A51",
430+
expected_reason=amend_reason,
431+
log=logger.debug,
432+
)
396433

397434

398435
# Scenario 10
@@ -469,12 +506,11 @@ def get_diagnosis_reason():
469506
return None
470507

471508

472-
# Scenario 11
473509
@pytest.mark.regression
474510
@pytest.mark.vpn_required
475511
@pytest.mark.fobt_diagnosis_date_entry
476512
def test_amend_diagnosis_date_no_change_alert(page: Page):
477-
# Step 1: # Query subject by criteria, log in, navigate to search page, select "Episodes" radio button, and open subject profile
513+
# Step 1: Query subject by criteria, log in, navigate to search page, select "Episodes" radio button, and open subject profile
478514
criteria = {
479515
"latest episode type": "FOBT",
480516
"latest episode status": "Open",
@@ -484,17 +520,14 @@ def test_amend_diagnosis_date_no_change_alert(page: Page):
484520
}
485521
prepare_subject_for_test(page, criteria, role="Screening Centre Manager at BCS001")
486522

487-
# Step 2: Search subject and go to profile
488-
search_subject_episode_by_nhs_number(page, df.iloc[0]["subject_nhs_number"])
489-
490-
# Step 3: Interact with subject page
523+
# Step 2: Interact with subject page
491524
subject_page_s11 = RecordDiagnosisDatePage(page)
492525
page.get_by_role("button", name="Advance FOBT Screening Episode").click()
493526
page.get_by_role("checkbox").check()
494527
page.get_by_role("button", name="Amend Diagnosis Date").click()
495528
subject_page_s11.click_save_button()
496529

497-
# Step 5: Assert alert message
530+
# Step 3: Assert alert message
498531
alert_message = subject_page_s11.get_alert_message()
499532
expected = "An amended date of diagnosis must not be earlier than the recorded diagnosis date and not in the future."
500533
assert expected in alert_message, f"Unexpected alert message. Got: {alert_message}"
@@ -681,16 +714,9 @@ def test_record_and_amend_diagnosis_date_multiple_times(page: Page):
681714
# Step 6: Assertions
682715
subject_event_s15 = SubjectEpisodeEventsAndNotesPage(page)
683716
event_details = subject_event_s15.get_latest_event_details()
684-
assert "A50" not in event_details["latest_event_status"]
685-
assert event_details["event"] == "Record Diagnosis Date"
686-
assert (
687-
event_details.get("diagnosis_reason") is None
688-
), f"Expected 'diagnosis_reason' to be None, but got: {event_details.get('diagnosis_reason')}"
689-
assert "Diag Date :" in event_details["item"]
690-
today_formatted = date.today().strftime("%d %b %Y") # "16 Jul 2025"
691-
assert (
692-
today_formatted in event_details["item"]
693-
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
717+
assert_diagnosis_event_details(
718+
event_details, expected_status_not="A50", expected_reason=None, log=logger.debug
719+
)
694720

695721
# --- Second: Amend Diagnosis Date (today, with reason) ---
696722
# Step 7: Interact with subject page
@@ -708,16 +734,12 @@ def test_record_and_amend_diagnosis_date_multiple_times(page: Page):
708734
# Step 8: Assertions
709735
subject_event_status_s15 = SubjectEpisodeEventsAndNotesPage(page)
710736
event_details = subject_event_status_s15.get_latest_event_details()
711-
assert "A51" not in event_details.get("latest_event_status", "")
712-
assert event_details["event"] == "Record Diagnosis Date"
713-
assert (
714-
amend_reason in event_details["item"]
715-
), f"Expected reason '{amend_reason}' to be part of item, but got: {event_details['item']}"
716-
assert "Diag Date :" in event_details["item"]
717-
today_formatted = date.today().strftime("%d %b %Y") # "16 Jul 2025"
718-
assert (
719-
today_formatted in event_details["item"]
720-
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
737+
assert_diagnosis_event_details(
738+
event_details,
739+
expected_status_not="A51",
740+
expected_reason=amend_reason,
741+
log=logger.debug,
742+
)
721743

722744
# --- Third: Remove Diagnosis Date (clear date, with reason) ---
723745
# Step 9: Interact with subject page
@@ -772,16 +794,12 @@ def test_record_and_amend_diagnosis_date_multiple_times(page: Page):
772794
# Step 12: Assertions
773795
subject_event_status_s15 = SubjectEpisodeEventsAndNotesPage(page)
774796
event_details = subject_event_status_s15.get_latest_event_details()
775-
assert "A51" not in event_details.get("latest_event_status", "")
776-
assert event_details["event"] == "Record Diagnosis Date"
777-
assert (
778-
amend_reason in event_details["item"]
779-
), f"Expected reason '{amend_reason}' to be part of item, but got: {event_details['item']}"
780-
assert "Diag Date :" in event_details["item"]
781-
today_formatted = date.today().strftime("%d %b %Y") # "16 Jul 2025"
782-
assert (
783-
today_formatted in event_details["item"]
784-
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
797+
assert_diagnosis_event_details(
798+
event_details,
799+
expected_status_not="A51",
800+
expected_reason=amend_reason,
801+
log=logger.debug,
802+
)
785803

786804

787805
# Scenario 16
@@ -831,16 +849,9 @@ def test_support_user_can_amend_diagnosis_date_earlier(page: Page):
831849
# Step 6: Assertions
832850
subject_event_s16 = SubjectEpisodeEventsAndNotesPage(page)
833851
event_details = subject_event_s16.get_latest_event_details()
834-
assert "A50" not in event_details["latest_event_status"]
835-
assert event_details["event"] == "Record Diagnosis Date"
836-
assert (
837-
event_details.get("diagnosis_reason") is None
838-
), f"Expected 'diagnosis_reason' to be None, but got: {event_details.get('diagnosis_reason')}"
839-
assert "Diag Date :" in event_details["item"]
840-
today_formatted = date.today().strftime("%d %b %Y") # "16 Jul 2025"
841-
assert (
842-
today_formatted in event_details["item"]
843-
), f"Expected today's date ({today_formatted}) in item but got: {event_details['item']}"
852+
assert_diagnosis_event_details(
853+
event_details, expected_status_not="A50", expected_reason=None, log=logger.debug
854+
)
844855

845856
# --- Second: Amend Diagnosis Date (yesterday, with reason) ---
846857
# Step 7: Interact with subject page

0 commit comments

Comments
 (0)