Skip to content

Commit f87c898

Browse files
Sperating out test_utils/test_calendar_pciker_methods.py into two files
One for unit testing the variable generation and the other to test all the methods work with BCSS
1 parent 17988b6 commit f87c898

File tree

3 files changed

+147
-55
lines changed

3 files changed

+147
-55
lines changed
Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
1-
from pages.screening_subject_search.subject_screening_search_page import (
2-
SubjectScreeningPage,
3-
)
4-
from pages.communication_production.communications_production_page import (
5-
CommunicationsProduction,
6-
)
7-
from pages.communication_production.batch_list_page import ActiveBatchList
8-
import pytest
9-
from playwright.sync_api import Page
10-
from pages.base_page import BasePage
11-
from utils.user_tools import UserTools
12-
from datetime import datetime
13-
14-
15-
@pytest.mark.smoke
16-
def test_calender_picker_v1(page: Page) -> None:
17-
"""
18-
This test is used to verify that the v1 calendar picker in utils/calendar_picker.py works as intended
19-
This uses the subject screening search page in order to do so
20-
NOTE: currently there is no validation that it has selected the correct date.
21-
This should be implemented after each date is selected however the locators on BCSS make this task difficult
22-
"""
23-
UserTools.user_login(page, "Hub Manager State Registered at BCS01")
24-
BasePage(page).go_to_screening_subject_search_page()
25-
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2021, 12, 1))
26-
SubjectScreeningPage(page).click_clear_filters_button()
27-
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2020, 3, 30))
28-
SubjectScreeningPage(page).click_clear_filters_button()
29-
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2020, 6, 15))
30-
SubjectScreeningPage(page).click_clear_filters_button()
31-
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime.today())
32-
33-
34-
@pytest.mark.smoke
35-
def test_calender_picker_v2(page: Page) -> None:
36-
"""
37-
This test is used to verify that the v2 calendar picker in utils/calendar_picker.py works as intended
38-
This uses the active batch list page in order to do so
39-
NOTE: currently there is no validation that it has selected the correct date.
40-
This should be implemented after each date is selected however the locators on BCSS make this task difficult
41-
"""
42-
UserTools.user_login(page, "Hub Manager State Registered at BCS01")
43-
BasePage(page).go_to_communications_production_page()
44-
CommunicationsProduction(page).go_to_active_batch_list_page()
45-
ActiveBatchList(page).enter_deadline_date_filter(datetime(1961, 12, 30))
46-
ActiveBatchList(page).clear_deadline_filter_date()
47-
ActiveBatchList(page).enter_deadline_date_filter(datetime(2026, 12, 1))
48-
ActiveBatchList(page).clear_deadline_filter_date()
49-
ActiveBatchList(page).enter_deadline_date_filter(datetime(1989, 6, 15))
50-
ActiveBatchList(page).clear_deadline_filter_date()
51-
ActiveBatchList(page).enter_deadline_date_filter(datetime.today())
1+
from pages.screening_subject_search.subject_screening_search_page import (
2+
SubjectScreeningPage,
3+
)
4+
from pages.communication_production.communications_production_page import (
5+
CommunicationsProduction,
6+
)
7+
from pages.communication_production.batch_list_page import ActiveBatchList
8+
import pytest
9+
from playwright.sync_api import Page
10+
from pages.base_page import BasePage
11+
from utils.user_tools import UserTools
12+
from datetime import datetime
13+
14+
15+
@pytest.mark.smoke
16+
def test_calender_picker_v1(page: Page) -> None:
17+
"""
18+
This test is used to verify that the v1 calendar picker in utils/calendar_picker.py works as intended
19+
This uses the subject screening search page in order to do so
20+
NOTE: currently there is no validation that it has selected the correct date.
21+
This should be implemented after each date is selected however the locators on BCSS make this task difficult
22+
"""
23+
UserTools.user_login(page, "Hub Manager State Registered at BCS01")
24+
BasePage(page).go_to_screening_subject_search_page()
25+
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2021, 12, 1))
26+
SubjectScreeningPage(page).click_clear_filters_button()
27+
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2020, 3, 30))
28+
SubjectScreeningPage(page).click_clear_filters_button()
29+
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime(2020, 6, 15))
30+
SubjectScreeningPage(page).click_clear_filters_button()
31+
SubjectScreeningPage(page).select_dob_using_calendar_picker(datetime.today())
32+
33+
34+
@pytest.mark.smoke
35+
def test_calender_picker_v2(page: Page) -> None:
36+
"""
37+
This test is used to verify that the v2 calendar picker in utils/calendar_picker.py works as intended
38+
This uses the active batch list page in order to do so
39+
NOTE: currently there is no validation that it has selected the correct date.
40+
This should be implemented after each date is selected however the locators on BCSS make this task difficult
41+
"""
42+
UserTools.user_login(page, "Hub Manager State Registered at BCS01")
43+
BasePage(page).go_to_communications_production_page()
44+
CommunicationsProduction(page).go_to_active_batch_list_page()
45+
ActiveBatchList(page).enter_deadline_date_filter(datetime(1961, 12, 30))
46+
ActiveBatchList(page).clear_deadline_filter_date()
47+
ActiveBatchList(page).enter_deadline_date_filter(datetime(2026, 12, 1))
48+
ActiveBatchList(page).clear_deadline_filter_date()
49+
ActiveBatchList(page).enter_deadline_date_filter(datetime(1989, 6, 15))
50+
ActiveBatchList(page).clear_deadline_filter_date()
51+
ActiveBatchList(page).enter_deadline_date_filter(datetime.today())
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import pytest
2+
from utils.calendar_picker import CalendarPicker
3+
from datetime import datetime
4+
from playwright.sync_api import Page
5+
6+
pytestmark = [pytest.mark.utils]
7+
8+
9+
def test_calculate_v2_calendar_variables(page: Page):
10+
calendar_picker = CalendarPicker(page)
11+
(
12+
current_month_long,
13+
month_long,
14+
month_short,
15+
current_year,
16+
year,
17+
end_of_current_decade,
18+
current_decade,
19+
decade,
20+
end_of_current_century,
21+
current_century,
22+
century,
23+
) = calendar_picker.calculate_v2_calendar_variables(
24+
datetime(2025, 4, 9), datetime(2020, 6, 9)
25+
)
26+
27+
assert current_month_long == "June"
28+
assert month_long == "April"
29+
assert month_short == "Apr"
30+
assert current_year == 2020
31+
assert year == 2025
32+
assert end_of_current_decade == "2029"
33+
assert current_decade == 2020
34+
assert decade == 2020
35+
assert end_of_current_century == "2090"
36+
assert current_century == 2000
37+
assert century == 2000
38+
39+
(
40+
current_month_long,
41+
month_long,
42+
month_short,
43+
current_year,
44+
year,
45+
end_of_current_decade,
46+
current_decade,
47+
decade,
48+
end_of_current_century,
49+
current_century,
50+
century,
51+
) = calendar_picker.calculate_v2_calendar_variables(
52+
datetime(1963, 1, 28), datetime(2020, 6, 9)
53+
)
54+
55+
assert current_month_long == "June"
56+
assert month_long == "January"
57+
assert month_short == "Jan"
58+
assert current_year == 2020
59+
assert year == 1963
60+
assert end_of_current_decade == "2029"
61+
assert current_decade == 2020
62+
assert decade == 1960
63+
assert end_of_current_century == "2090"
64+
assert current_century == 2000
65+
assert century == 1900
66+
67+
(
68+
current_month_long,
69+
month_long,
70+
month_short,
71+
current_year,
72+
year,
73+
end_of_current_decade,
74+
current_decade,
75+
decade,
76+
end_of_current_century,
77+
current_century,
78+
century,
79+
) = calendar_picker.calculate_v2_calendar_variables(
80+
datetime(2356, 12, 18), datetime(2020, 6, 9)
81+
)
82+
83+
assert current_month_long == "June"
84+
assert month_long == "December"
85+
assert month_short == "Dec"
86+
assert current_year == 2020
87+
assert year == 2356
88+
assert end_of_current_decade == "2029"
89+
assert current_decade == 2020
90+
assert decade == 2350
91+
assert end_of_current_century == "2090"
92+
assert current_century == 2000
93+
assert century == 2300

utils/calendar_picker.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def v1_calender_picker(self, date: datetime) -> None:
105105
self.select_day(date)
106106

107107
def calculate_v2_calendar_variables(
108-
self, date: datetime
108+
self, date: datetime, current_date: datetime
109109
) -> tuple[str, str, str, int, int, str, int, int, str, int, int]:
110110
"""
111111
This function calculates all of the variables needed to traverse through the v2 calendar picker
@@ -122,7 +122,6 @@ def calculate_v2_calendar_variables(
122122
current_century: the current century in yyyy format (e.g. 2000/2100)
123123
century: the wanted century in yyyy format (e.g. 1900)
124124
"""
125-
current_date = datetime.today()
126125
current_month_long = str(current_date.strftime("%B"))
127126
current_year = int(current_date.strftime("%Y"))
128127
current_century = (current_year // 100) * 100
@@ -227,7 +226,7 @@ def v2_calendar_picker(self, date: datetime) -> None:
227226
This is the main method to navigate the v2 calendar picker (like the one on the Active Batch List page)
228227
This calls all the relevant functions in order to know how to traverse the picker
229228
"""
230-
229+
current_date = datetime.today()
231230
(
232231
current_month_long,
233232
month_long,
@@ -240,7 +239,7 @@ def v2_calendar_picker(self, date: datetime) -> None:
240239
end_of_current_century,
241240
current_century,
242241
century,
243-
) = self.calculate_v2_calendar_variables(date)
242+
) = self.calculate_v2_calendar_variables(date, current_date)
244243

245244
click_month, click_year, click_decade, click_century = (
246245
self.v2_calendar_picker_traverse_back(

0 commit comments

Comments
 (0)