Skip to content
Snippets Groups Projects
Unverified Commit d768c77c authored by Diana Huang's avatar Diana Huang Committed by GitHub
Browse files

Merge pull request #18123 from edx/diana/button-bokchoy-tests

Bok choy tests for the account deletion flow
parents 879ba582 a06072c8
No related branches found
No related tags found
No related merge requests found
......@@ -78,3 +78,24 @@ class AccountSettingsPage(FieldsMixin, PageObject):
order detail link or not.
"""
return self.q(css='.u-field-{} .u-field-{}'.format(field_id, 'link')).visible
@property
def is_delete_button_visible(self):
self.scroll_to_element('#account-deletion-container')
return self.q(css='#delete-account-btn').visible
def click_delete_button(self):
self.q(css="#delete-account-btn").click()
@property
def is_delete_modal_visible(self):
return self.q(css='.delete-confirmation-wrapper').visible
def delete_confirm_button_enabled(self):
return self.q(css='.paragon__modal-footer .paragon__btn')[0].is_enabled()
def click_delete_confirm_button(self):
return self.q(css='.paragon__modal-footer .paragon__btn')[0].click()
def fill_in_password_field(self, password):
self.q(css='#asInput1').fill(password)
......@@ -24,7 +24,7 @@ class AccountSettingsTestMixin(EventsTestMixin, AcceptanceTest):
USER_SETTINGS_CHANGED_EVENT_NAME = 'edx.user.settings.changed'
ACCOUNT_SETTINGS_REFERER = u"/account/settings"
def visit_account_settings_page(self):
def visit_account_settings_page(self, gdpr=False):
"""
Visit the account settings page for the current user, and store the page instance
as self.account_settings_page.
......@@ -33,13 +33,23 @@ class AccountSettingsTestMixin(EventsTestMixin, AcceptanceTest):
self.account_settings_page = AccountSettingsPage(self.browser)
self.account_settings_page.visit()
self.account_settings_page.wait_for_ajax()
# TODO: LEARNER-4422 - delete when we clean up flags
if gdpr:
self.account_settings_page.browser.get(self.browser.current_url + "?course_experience.gdpr=1")
self.account_settings_page.wait_for_page()
def log_in_as_unique_user(self, email=None, full_name=None):
def log_in_as_unique_user(self, email=None, full_name=None, password=None):
"""
Create a unique user and return the account's username and id.
"""
username = "test_{uuid}".format(uuid=self.unique_id[0:6])
auto_auth_page = AutoAuthPage(self.browser, username=username, email=email, full_name=full_name).visit()
auto_auth_page = AutoAuthPage(
self.browser,
username=username,
email=email,
full_name=full_name,
password=password
).visit()
user_id = auto_auth_page.get_user_id()
return username, user_id
......@@ -527,6 +537,40 @@ class AccountSettingsPageTest(AccountSettingsTestMixin, AcceptanceTest):
self.assertTrue(self.account_settings_page.order_button_is_visible('order-Edx-123'))
class AccountSettingsDeleteAccountTest(AccountSettingsTestMixin, AcceptanceTest):
"""
Tests for the account deletion workflow.
"""
def setUp(self):
"""
Initialize account and pages.
"""
super(AccountSettingsDeleteAccountTest, self).setUp()
self.full_name = FULL_NAME
self.social_link = ''
self.password = 'password'
self.username, self.user_id = self.log_in_as_unique_user(full_name=self.full_name, password=self.password)
self.visit_account_settings_page(gdpr=True)
def test_button_visible(self):
self.assertTrue(
self.account_settings_page.is_delete_button_visible
)
def test_delete_modal(self):
self.account_settings_page.click_delete_button()
self.assertTrue(
self.account_settings_page.is_delete_modal_visible
)
self.assertFalse(
self.account_settings_page.delete_confirm_button_enabled()
)
self.account_settings_page.fill_in_password_field(self.password)
self.assertTrue(
self.account_settings_page.delete_confirm_button_enabled()
)
@attr('a11y')
class AccountSettingsA11yTest(AccountSettingsTestMixin, AcceptanceTest):
"""
......
......@@ -22,5 +22,13 @@
"name": "studio.enable_policy_page",
"active": true
}
},
{
"pk": 3,
"model": "waffle.flag",
"fields": {
"name": "course_experience.gdpr",
"everyone": false
}
}
]
......@@ -468,7 +468,8 @@ def account_settings(request):
GET /account/settings
"""
return render_to_response('student_account/account_settings.html', account_settings_context(request))
context = account_settings_context(request)
return render_to_response('student_account/account_settings.html', context)
@login_required
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment