Skip to content

Commit aa86646

Browse files
Altering method to use datasetfieldutil and creating a new Enum class
1 parent 051f645 commit aa86646

File tree

3 files changed

+47
-41
lines changed

3 files changed

+47
-41
lines changed

pages/datasets/investigation_dataset_page.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,10 +1578,18 @@ class ExtracolonicSummaryCodeOptions(StrEnum):
15781578

15791579

15801580
class TaggingAgentDrugAdministeredOptions(StrEnum):
1581+
"""Enum for tagging agent drug administered options"""
15811582
YES = "17058~~204368"
15821583
NO = "17059"
15831584
NOT_REPORTED = "202140"
15841585

1586+
class IVConstantAdminsteredOptions(StrEnum):
1587+
"""Enum for iv constant administered options"""
1588+
YES = "17058~~204367"
1589+
NO = "17059~~204334"
1590+
NOT_REPORTED = "202140"
1591+
1592+
15851593

15861594
# Registry of all known Enums to search when matching string values
15871595
ALL_ENUMS: List[type[Enum]] = [

tests/regression/regression_tests/fobt_regression_tests/test_scenario_8.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
ProcedureOutcomeOptions,
1818
ScanPositionOptions,
1919
SegmentalInadequacyOptions,
20+
IVConstantAdminsteredOptions,
2021
)
2122
from pages.datasets.subject_datasets_page import SubjectDatasetsPage
2223
from utils.user_tools import UserTools
@@ -505,7 +506,7 @@ def test_scenario_8(page: Page) -> None:
505506
contrast_tagging_and_drug = {
506507
"iv buscopan administered": CancerRadiologyYesNoOptions.NO,
507508
"contraindicated": YesNoOptions.NO,
508-
"iv contrast administered": CancerRadiologyYesNoOptions.NO,
509+
"iv contrast administered": IVConstantAdminsteredOptions.NO,
509510
"tagging agent given": TaggingAgentDrugAdministeredOptions.YES,
510511
"additional bowel preparation administered": CancerRadiologyYesNoOptions.YES,
511512
"drug_type1": DrugTypeOptions.PICOLAX,
@@ -542,8 +543,8 @@ def test_scenario_8(page: Page) -> None:
542543
# # And I press OK on my confirmation prompt
543544
InvestigationDatasetCompletion(page).complete_dataset_with_args(
544545
general_information=general_information,
545-
tagging_agent_given_drug_information=tagging_agent_given_drug_information,
546546
contrast_tagging_and_drug=contrast_tagging_and_drug,
547+
tagging_agent_given_drug_information=tagging_agent_given_drug_information,
547548
radiology_information=radiology_information,
548549
)
549550

utils/investigation_dataset.py

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -486,49 +486,46 @@ def fill_out_contrast_tagging_and_drug_information(
486486
logging.info("🧪 Filling out Contrast, Tagging & Drug Information")
487487
self.investigation_datasets_pom.click_show_contrast_tagging_and_drug_information()
488488

489-
field_map = {
490-
"iv buscopan administered": "#UI_BUSCOPAN_ADMINISTERED",
491-
"iv contrast administered": "#UI_CONTRAST_ADMINISTERED",
492-
"tagging agent given": "#UI_TAGGING_AGENT_GIVEN_DRUGS_ADMINISTERED",
493-
"additional bowel preparation administered": "#UI_ADDITIONAL_BOWEL_PREPARATION_ADMINISTERED",
494-
"contraindicated": "#UI_BUSCOPAN_CONTRAINDICATED",
495-
}
496-
normalized_map = {k.strip().lower(): v for k, v in field_map.items()}
497-
489+
# Use for loop and match-case for endoscopy_information fields
498490
for key, value in contrast_tagging_and_drug.items():
499-
normalized_key = key.strip().lower()
500-
501-
if normalized_key in normalized_map:
502-
selector = normalized_map[normalized_key]
503-
504-
if normalized_key == "tagging agent given":
505-
logging.info(
506-
"🔍 Waiting for 'Tagging Agent Given' dropdown to become visible..."
491+
match key:
492+
case "iv buscopan administered":
493+
DatasetFieldUtil(self.page).populate_select_locator_for_field(
494+
"IV Buscopan Administered", value
507495
)
508-
self.page.locator(selector).wait_for(state="visible")
509-
options = self.page.locator(selector + " option").all_inner_texts()
510-
logging.info(
511-
f"🧾 Options available in 'Tagging Agent Given': {options}"
496+
case "Contraindicated":
497+
DatasetFieldUtil(
498+
self.page
499+
).populate_select_locator_for_field_inside_div(
500+
"contraindicated", "UI_BUSCOPAN_CONTRAINDICATED_ROW", value
512501
)
513-
logging.info(
514-
f"✅ Dropdown visible. Selecting value: {to_enum_name_or_value(value)}"
502+
case "iv contrast administered":
503+
DatasetFieldUtil(self.page).populate_select_locator_for_field(
504+
"IV Contrast Administered", value
515505
)
516-
else:
517-
logging.info(f"Setting {key}: {to_enum_name_or_value(value)}")
518-
519-
self.page.select_option(selector, value)
520-
521-
elif normalized_key.startswith(("drug_type", "drug_dose")):
522-
drug_info = {
523-
dk: dv
524-
for dk, dv in contrast_tagging_and_drug.items()
525-
if dk.strip().lower().startswith(("drug_type", "drug_dose"))
526-
}
527-
self.fill_out_drug_information(drug_info)
528-
break
529-
530-
else:
531-
logging.warning(f"⚠️ Unknown contrast field: {key}")
506+
case "reason":
507+
DatasetFieldUtil(
508+
self.page
509+
).populate_select_locator_for_field_inside_div(
510+
"Reason", "UI_CONTRAST_ADMINISTERED_REASON_ROW", value
511+
)
512+
case "tagging agent given":
513+
DatasetFieldUtil(self.page).populate_select_locator_for_field(
514+
"Tagging Agent Given", value
515+
)
516+
case "additional bowel preparation administered":
517+
DatasetFieldUtil(self.page).populate_select_locator_for_field(
518+
"Additional Bowel Preparation Administered", value
519+
)
520+
case k if k.startswith(("drug_type", "drug_dose")):
521+
# Extract all drug-related keys/values from the main dict
522+
drug_info = {
523+
dk: dv
524+
for dk, dv in contrast_tagging_and_drug.items()
525+
if dk.startswith(("drug_type", "drug_dose"))
526+
}
527+
# Call the existing drug filling method once
528+
self.fill_out_drug_information(drug_info)
532529

533530
def fill_out_drug_information(self, drug_information: dict) -> None:
534531
"""

0 commit comments

Comments
 (0)