Skip to content

Commit 259a3c2

Browse files
BlessedDevrparke
authored andcommitted
Add test_email_template_file_management_settings
This test covers the 3 settings for a file attached to an email template. Each setting is changed to a new value and the test confirms that the changes are applied.
1 parent 205839d commit 259a3c2

2 files changed

Lines changed: 127 additions & 9 deletions

File tree

tests/notifications/functional_tests/test_document_download_via_ui.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
from config import config
66
from tests.pages import (
77
ChangeLinkTextForEmailFilePage,
8+
ChangeRentionPeriodForEmailFilePage,
89
DocumentDownloadLandingPage,
10+
EmailConfirmationSettingForEmailFilePage,
911
ManageEmailTemplateFilePage,
1012
ManageFilesForEmailTemplatePage,
1113
SendEmailPreviewPage,
@@ -139,3 +141,85 @@ def test_send_one_off_email_with_file_via_ui(driver, login_seeded_user):
139141
templates_page = ShowTemplatesPage(driver)
140142
assert templates_page.get_h1_text() == "Templates"
141143
assert template_name not in templates_page.get_all_listed_templates()
144+
145+
146+
@recordtime
147+
@pytest.mark.xdist_group(name="send-files-via-ui-flow")
148+
def test_email_template_file_management_settings(driver, login_seeded_user):
149+
# Test Creating an email template and attach a file to it
150+
template_name = f"Functional Tests - test email file management settings- {uuid.uuid4()}"
151+
content = "Hi ((name)), download this file:"
152+
file_name = "attachment.pdf"
153+
create_an_email_template_and_attach_a_file(driver, file_name, template_name, content)
154+
155+
# Confirm file has been attached to template on the Preview email template page
156+
view_email_template_page = ViewEmailTemplatePage(driver)
157+
assert view_email_template_page.get_h1_text() == template_name
158+
assert view_email_template_page.get_file_added_count_text() == "1 file added"
159+
160+
# Go to file management page
161+
view_email_template_page.click_manage_files_button()
162+
manage_files_page = ManageFilesForEmailTemplatePage(driver)
163+
assert manage_files_page.get_h1_text() == "Manage files"
164+
manage_files_page.click_manage_link(file_name)
165+
manage_a_file_page = ManageEmailTemplateFilePage(driver)
166+
assert manage_a_file_page.get_h1_text() == file_name
167+
168+
# Change link text
169+
link_text_label = "Link text"
170+
original_link_text = manage_a_file_page.get_file_setting_value(link_text_label)
171+
assert original_link_text == "Not set"
172+
manage_a_file_page.click_change_file_setting(link_text_label)
173+
change_link_text_page = ChangeLinkTextForEmailFilePage(driver)
174+
assert change_link_text_page.get_h1_text() == "Add link text"
175+
new_link_text = "file_download_link"
176+
change_link_text_page.fill_in_link_text(new_link_text)
177+
change_link_text_page.click_continue_button()
178+
179+
# confirm link text change
180+
assert manage_a_file_page.get_file_setting_value(link_text_label) == new_link_text
181+
182+
# Change retention period
183+
retention_period_label = "Available for"
184+
original_retention_period_text = manage_a_file_page.get_file_setting_value(retention_period_label)
185+
assert original_retention_period_text == "26 weeks after sending\n (about 6 months)"
186+
manage_a_file_page.click_change_file_setting(retention_period_label)
187+
assert change_link_text_page.get_h1_text() == "How long the file is available"
188+
change_retention_period = ChangeRentionPeriodForEmailFilePage(driver)
189+
new_retention_period = "50"
190+
change_retention_period.fill_in_retention_period(new_retention_period)
191+
change_retention_period.click_continue_button()
192+
193+
# confirm retention period change
194+
assert (
195+
manage_a_file_page.get_file_setting_value(retention_period_label)
196+
== f"{new_retention_period} weeks after sending\n (about 11 months)"
197+
)
198+
assert manage_a_file_page.get_h1_text() == file_name
199+
200+
# Change email confirmation
201+
email_confirmation_label = "Ask recipient for email address"
202+
confirmation_label_choice = manage_a_file_page.get_file_setting_value(email_confirmation_label)
203+
assert confirmation_label_choice == "Yes"
204+
manage_a_file_page.click_change_file_setting(email_confirmation_label)
205+
email_confirmation_page = EmailConfirmationSettingForEmailFilePage(driver)
206+
assert email_confirmation_page.get_h1_text() == "Ask recipient for their email address"
207+
new_confirmation_label_choice = "No"
208+
email_confirmation_page.select_email_confirmation_option(new_confirmation_label_choice)
209+
email_confirmation_page.click_continue_button()
210+
211+
# confirm email confirmation option change
212+
assert manage_a_file_page.get_h1_text() == file_name
213+
assert manage_a_file_page.get_file_setting_value(email_confirmation_label) == new_confirmation_label_choice
214+
215+
# delete template which would also delete file
216+
manage_a_file_page.click_back_link()
217+
manage_files_page.click_back_link()
218+
assert view_email_template_page.get_h1_text() == template_name
219+
view_email_template_page.click_delete_template_link()
220+
view_email_template_page.click_template_deletion_confirmation_button()
221+
222+
# confirm template has been deleted
223+
templates_page = ShowTemplatesPage(driver)
224+
assert templates_page.get_h1_text() == "Templates"
225+
assert template_name not in templates_page.get_all_listed_templates()

tests/pages/pages.py

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,11 @@ def click_remove_file_dialog_button(self):
953953
element = self.wait_for_element(ManageEmailTemplateFilePage.remove_file_dialog_button)
954954
element.click()
955955

956+
def get_file_setting_value(self, label):
957+
xpath = f"//div[contains(@class, 'govuk-summary-list__row')][dt[contains(., '{label}')]]//dd[contains(@class, 'govuk-summary-list__value')]" # noqa: E501
958+
element = self.wait_for_element((By.XPATH, xpath))
959+
return element.get_attribute("textContent").strip()
960+
956961
def click_change_file_setting(self, label):
957962
xpath = (
958963
f"//div[contains(@class, 'govuk-summary-list__row')][dt[contains(., '{label}')]]//a[contains(., 'Change')]"
@@ -961,6 +966,43 @@ def click_change_file_setting(self, label):
961966
element.click()
962967

963968

969+
class ManageFilesForEmailTemplatePage(BasePage):
970+
def click_manage_link(self, file_name):
971+
# The current implementation of the manage link is such that there could be multiple links
972+
# with the file name displayed in a hidden span tag being the only differentiator
973+
# This method needs to be dynamic to filter on the file nane.
974+
element = self.wait_for_element((By.XPATH, f"//a[contains(text(), 'Manage')][contains(., {file_name})]"))
975+
976+
element.click()
977+
978+
979+
class EmailConfirmationSettingForEmailFilePage(BasePage):
980+
continue_button = (By.CSS_SELECTOR, "button[type='submit']")
981+
982+
def click_continue_button(self):
983+
element = self.wait_for_element(ChangeRentionPeriodForEmailFilePage.continue_button)
984+
element.click()
985+
986+
def select_email_confirmation_option(self, value):
987+
xpath = f"//div[fieldset[legend[contains(., 'confirm their email address')]]]//label[contains(., '{value}')]"
988+
element = self.wait_for_element((By.XPATH, xpath))
989+
element.click()
990+
991+
992+
class ChangeRentionPeriodForEmailFilePage(BasePage):
993+
retention_period_input = (By.CSS_SELECTOR, "input[name='retention_period'][id='retention_period']")
994+
continue_button = (By.CSS_SELECTOR, "button[type='submit']")
995+
996+
def click_continue_button(self):
997+
element = self.wait_for_element(ChangeRentionPeriodForEmailFilePage.continue_button)
998+
element.click()
999+
1000+
def fill_in_retention_period(self, value):
1001+
element = self.wait_for_element(ChangeRentionPeriodForEmailFilePage.retention_period_input)
1002+
element.clear()
1003+
element.send_keys(value)
1004+
1005+
9641006
class ChangeLinkTextForEmailFilePage(BasePage):
9651007
link_text_input = (By.CSS_SELECTOR, "input[name='link_text'][id='link_text']")
9661008
continue_button = (By.CSS_SELECTOR, "button[type='submit']")
@@ -971,18 +1013,10 @@ def click_continue_button(self):
9711013

9721014
def fill_in_link_text(self, value):
9731015
element = self.wait_for_element(ChangeLinkTextForEmailFilePage.link_text_input)
1016+
element.clear()
9741017
element.send_keys(value)
9751018

9761019

977-
class ManageFilesForEmailTemplatePage(BasePage):
978-
def click_manage_link(self, file_name):
979-
# The current implementation of the manage link is such that there could be multiple links
980-
# with the file name displayed in a hidden span tag being the only differentiator
981-
# This method needs to be dynamic to filter on the file nane.
982-
element = self.wait_for_element((By.XPATH, f"//a[contains(text(), 'Manage')][contains(., '{file_name}')]"))
983-
element.click()
984-
985-
9861020
class EditLetterTemplatePage(BasePage):
9871021
name_input = NameInputElement(clear=True)
9881022
template_content_input = TemplateContentElement(clear=True)

0 commit comments

Comments
 (0)