|
| 1 | +import pytest |
| 2 | +from playwright.sync_api import Page |
| 3 | +from utils.user_tools import UserTools |
| 4 | +from pages.base_page import BasePage |
| 5 | +from pages.screening_subject_search.subject_demographic_page import ( |
| 6 | + SubjectDemographicPage, |
| 7 | +) |
| 8 | +from pages.screening_subject_search.subject_screening_summary_page import ( |
| 9 | + SubjectScreeningSummaryPage, |
| 10 | +) |
| 11 | +from utils.screening_subject_page_searcher import ( |
| 12 | + search_subject_demographics_by_nhs_number, |
| 13 | + search_subject_by_nhs_number, |
| 14 | +) |
| 15 | +from utils.oracle.oracle import OracleDB |
| 16 | +import logging |
| 17 | +from faker import Faker |
| 18 | +from datetime import datetime, timedelta |
| 19 | + |
| 20 | + |
| 21 | +@pytest.mark.regression |
| 22 | +@pytest.mark.subject_tests |
| 23 | +@pytest.mark.wip |
| 24 | +def test_not_amending_temporary_address(page: Page): |
| 25 | + """ """ |
| 26 | + |
| 27 | + # Screening Centre Manager - State Registered (England) |
| 28 | + UserTools.user_login(page, "Screening Centre Manager at BCS001") |
| 29 | + |
| 30 | + # Navigate to the Subject Search Criteria Page |
| 31 | + BasePage(page).go_to_screening_subject_search_page() |
| 32 | + |
| 33 | + # Search for a subject's demographics by NHS Number |
| 34 | + nhs_no = "9322895063" |
| 35 | + search_subject_demographics_by_nhs_number(page, nhs_no) |
| 36 | + |
| 37 | + # Update the subject's postcode |
| 38 | + fake = Faker("en_GB") |
| 39 | + random_postcode = fake.postcode() |
| 40 | + SubjectDemographicPage(page).fill_postcode_input(random_postcode) |
| 41 | + SubjectDemographicPage(page).postcode_field.press("Tab") |
| 42 | + SubjectDemographicPage(page).click_update_subject_data_button() |
| 43 | + |
| 44 | + df = OracleDB().execute_query( |
| 45 | + """ |
| 46 | + SELECT |
| 47 | + ss.subject_nhs_number, adds.address_type, adds.effective_from |
| 48 | + FROM screening_subject_t ss |
| 49 | + INNER JOIN sd_contact_t c ON c.nhs_number = ss.subject_nhs_number |
| 50 | + INNER JOIN sd_address_t adds ON adds.contact_id = c.contact_id |
| 51 | + WHERE ss.subject_nhs_number = :nhs_no |
| 52 | + """, |
| 53 | + {"nhs_no": nhs_no}, |
| 54 | + ) |
| 55 | + |
| 56 | + for address_type in df["address_type"]: |
| 57 | + logging.info(f"Address Type: {address_type}") |
| 58 | + try: |
| 59 | + assert int(df["address_type"].iloc[address_type]) != 13043 |
| 60 | + except AssertionError: |
| 61 | + logging.error( |
| 62 | + f"Test Failed - Subject has a temporary address: {df['address_type'].iloc[0]}\n{AssertionError}" |
| 63 | + ) |
| 64 | + |
| 65 | + |
| 66 | +@pytest.mark.regression |
| 67 | +@pytest.mark.subject_tests |
| 68 | +def test_add_temporyay_address_then_delete(page: Page): |
| 69 | + """ """ |
| 70 | + |
| 71 | + # Screening Centre Manager - State Registered (England) |
| 72 | + UserTools.user_login(page, "Screening Centre Manager at BCS001") |
| 73 | + |
| 74 | + # Navigate to the |
| 75 | + BasePage(page).go_to_screening_subject_search_page() |
| 76 | + # Search for a subject's demographics by NHS Number |
| 77 | + nhs_no = "9322895063" |
| 78 | + search_subject_demographics_by_nhs_number(page, nhs_no) |
| 79 | + # Add a temporary address |
| 80 | + temp_address = { |
| 81 | + "valid_from": datetime.today(), |
| 82 | + "valid_to": datetime.today() + timedelta(days=31), |
| 83 | + "address_line_1": "Temporary Address Line 1", |
| 84 | + "address_line_2": "Temporary Address Line 2", |
| 85 | + "address_line_3": "Temporary Address Line 3", |
| 86 | + "address_line_4": "Temporary Address Line 4", |
| 87 | + "address_line_5": "Temporary Address Line 5", |
| 88 | + "postcode": "AB12 3CD", |
| 89 | + } |
| 90 | + SubjectDemographicPage(page).update_temporary_address(temp_address) |
| 91 | + SubjectDemographicPage(page).click_back_button() |
| 92 | + search_subject_by_nhs_number(page, nhs_no) |
| 93 | + SubjectScreeningSummaryPage(page).verify_temporary_address_icon_visible() |
| 94 | + SubjectScreeningSummaryPage(page).click_temporary_address_icon() |
| 95 | + SubjectScreeningSummaryPage(page).verify_temporary_address_popup_visible() |
| 96 | + |
| 97 | + # Delete the temporary address |
| 98 | + temp_address = { |
| 99 | + "valid_from": None, |
| 100 | + "valid_to": None, |
| 101 | + "address_line_1": "", |
| 102 | + "address_line_2": "", |
| 103 | + "address_line_3": "", |
| 104 | + "address_line_4": "", |
| 105 | + "address_line_5": "", |
| 106 | + "postcode": "", |
| 107 | + } |
| 108 | + SubjectDemographicPage(page).update_temporary_address(temp_address) |
| 109 | + |
| 110 | + df = OracleDB().execute_query( |
| 111 | + """ |
| 112 | + SELECT |
| 113 | + ss.subject_nhs_number, adds.address_type, adds.effective_from |
| 114 | + FROM screening_subject_t ss |
| 115 | + INNER JOIN sd_contact_t c ON c.nhs_number = ss.subject_nhs_number |
| 116 | + INNER JOIN sd_address_t adds ON adds.contact_id = c.contact_id |
| 117 | + WHERE ss.subject_nhs_number = :nhs_no |
| 118 | + """, |
| 119 | + {"nhs_no": nhs_no}, |
| 120 | + ) |
| 121 | + |
| 122 | + try: |
| 123 | + assert int(df["address_type"].iloc[0]) != 13043 |
| 124 | + logging.info("Test Passed - Subject does not have a temporary address") |
| 125 | + except AssertionError: |
| 126 | + logging.error( |
| 127 | + f"Test Failed - Subject has a temporary address: {df['address_type'].iloc[0]}\n{AssertionError}" |
| 128 | + ) |
0 commit comments