def test_edit_details_non_admin(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) klass_1, class_name_1, access_code_1 = create_class_directly(email_1) create_school_student_directly(access_code_1) join_teacher_to_organisation(email_2, name, postcode) klass_2, class_name_2, access_code_2 = create_class_directly(email_2) create_school_student_directly(access_code_2) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_login_page().login(email_2, password_2) page = page.change_teacher_details({ 'title': 'Mr', 'first_name': 'Florian', 'last_name': 'Aucomte', 'current_password': '******', }) assert self.is_dashboard_page(page) assert is_teacher_details_updated_message_showing(selenium) assert page.check_account_details({ 'title': 'Mr', 'first_name': 'Florian', 'last_name': 'Aucomte', })
def test_edit_details(self): email, password = signup_teacher_directly() school_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, password, student = create_school_student_directly( access_code) selenium.get(self.live_server_url) page = HomePage(selenium) \ .go_to_login_page() \ .login(email, password) assert page.check_organisation_details({ 'name': school_name, 'postcode': postcode }) new_name = 'new ' + school_name new_postcode = 'OX2 6LE' page.change_organisation_details({ 'name': new_name, 'postcode': new_postcode }) assert page.check_organisation_details({ 'name': new_name, 'postcode': new_postcode })
def test_view_resources(self): email, password = signup_teacher_directly() create_organisation_directly(email) klass, name, access_code = create_class_directly(email) create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_login_page() page = page.login(email, password) assert self.is_dashboard_page(page) page = page.go_to_resources_page().go_to_materials_page() assert self.is_materials_page(page) page = page.click_pdf_link() assert self.is_pdf_viewer_page(page) page = page.click_resources_button_link().go_to_materials_page() assert self.is_materials_page(page) keystages = ['ks1', 'lks2', 'uks2', 'ks3'] for ks in keystages: page = page.click_keystage_link(ks) assert self.is_materials_page(page)
def test_delete(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly( access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name) page = page.toggle_select_student(student_name).delete_students() assert page.is_dialog_showing() page = page.cancel_dialog() assert not page.is_dialog_showing() assert page.has_students() assert page.student_exists(student_name) page = page.delete_students() assert page.is_dialog_showing() page = page.confirm_dialog_expect_error() assert page.does_not_have_students() assert page.student_does_not_exist(student_name)
def test_move(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() org_name, postcode = create_organisation_directly(email_1) join_teacher_to_organisation(email_2, org_name, postcode) _, class_name_1, access_code_1 = create_class_directly(email_1) _, class_name_2, access_code_2 = create_class_directly(email_2) student_name_1, student_password_1, _ = create_school_student_directly(access_code_1) student_name_2, student_password_2, _ = create_school_student_directly(access_code_1) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email_1, password_1) page = page.go_to_classes_page().go_to_class_page(class_name_1) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student(student_name_1) page = move_students(page, 0) assert page.has_students() assert page.student_does_not_exist(student_name_1) assert page.student_exists(student_name_2) page = page.logout().go_to_teach_page().login(email_2, password_2) page = page.go_to_classes_page().go_to_class_page(class_name_2) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_does_not_exist(student_name_2)
def test_login_failure(self): selenium.get(self.live_server_url + "/portal/redesign/home") page = HomePage(selenium) page = page.go_to_login_page() page = page.login_failure('*****@*****.**', 'Incorrect password') assert page.has_login_failed()
def test_change_email(self): email, password = signup_teacher_directly() create_organisation_directly(email) klass, name, access_code = create_class_directly(email) create_school_student_directly(access_code) selenium.get(self.live_server_url + "/portal/redesign/home") page = HomePage(selenium).go_to_login_page().login(email, password) new_email = '*****@*****.**' page = page.change_email('Test', 'Teacher', new_email, password) assert page.__class__.__name__ == 'EmailVerificationNeededPage' assert is_teacher_email_updated_message_showing(selenium) page = email_utils.follow_change_email_link_to_dashboard( page, mail.outbox[0]) mail.outbox = [] page = page.login(new_email, password) assert page.check_account_details({ 'title': 'Mr', 'first_name': 'Test', 'last_name': 'Teacher', })
def test_reset_password(self): homepage = self.go_to_homepage() username = create_independent_student(homepage)[2] page = self.get_to_forgotten_password_page() page.reset_username_submit(username) self.wait_for_email() page = email_utils.follow_reset_email_link(selenium, mail.outbox[0]) new_password = '******' page.reset_password(new_password) selenium.get(self.live_server_url) page = self \ .go_to_homepage() \ .go_to_play_page() \ .go_to_independent_form() \ .independent_student_login(username, new_password) assert self.is_independent_student_details(page)
def test_join(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_teach_page()\ .login(email_2, password_2)\ .go_to_organisation_create_or_join_page()\ .join_organisation(name) page = page\ .logout()\ .go_to_teach_page()\ .login(email_1, password_1)\ .go_to_organisation_manage_page() assert page.has_join_request(email_2) page = page.accept_join_request(email_2) assert page.has_no_join_requests() assert page.number_of_members() == 2 assert page.number_of_admins() == 1 page = page\ .logout()\ .go_to_teach_page()\ .login(email_2, password_2)\ .go_to_organisation_manage_page() assert page.check_organisation_name(name) assert page.is_not_admin_view()
def test_edit_details(self): email, password = signup_teacher_directly() name, postcode = create_organisation_directly(email) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_teach_page()\ .login(email, password)\ .go_to_organisation_manage_page() assert page.check_organisation_details({ 'name': name, 'postcode': postcode }) new_name = 'new ' + name new_postcode = 'OX2 6LE' page.change_organisation_details({ 'name': new_name, 'postcode': new_postcode }) assert page.check_organisation_details({ 'name': new_name, 'postcode': new_postcode })
def test_change_password(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly( access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_play_page()\ .school_login(student_name, access_code, student_password)\ .go_to_account_page() new_password = '******' + student_password page = page.change_account_details({ 'password': new_password, 'confirm_password': new_password, 'current_password': student_password }) page = page.logout()\ .go_to_play_page()\ .school_login_incorrect(student_name, access_code, student_password) assert page.school_login_has_failed() page = page.school_login(student_name, access_code, new_password) assert self.is_dashboard(page)
def test_reset_password(self): page = self.go_to_homepage() page, name, username, email, password = create_independent_student(page) page = self.get_to_forgotten_password_page() page.reset_username_submit(username) self.wait_for_email() page = email_utils.follow_reset_email_link(selenium, mail.outbox[0]) new_password = '******' page.student_reset_password(new_password) selenium.get(self.live_server_url) page = self \ .go_to_homepage() \ .go_to_login_page() \ .independent_student_login(username, new_password) assert page.__class__.__name__ == 'PlayDashboardPage' page = page.go_to_account_page() assert page.check_account_details({ 'name': name })
def test_deny_join(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) _, class_name, access_code = create_class_directly(email_1) create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium) \ .go_to_login_page() \ .login_no_school(email_2, password_2) \ .join_organisation(name) assert page.__class__.__name__ == 'OnboardingRevokeRequestPage' page = page \ .logout() \ .go_to_login_page() \ .login(email_1, password_1) assert page.has_join_request(email_2) page = page.deny_join_request() assert not page.has_join_request(email_2) page = page \ .logout() \ .go_to_login_page() \ .login_no_school(email_2, password_2) assert page.__class__.__name__ == 'OnboardingOrganisationPage'
def test_move(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() org_name, postcode = create_organisation_directly(email_1) join_teacher_to_organisation(email_2, org_name, postcode) _, class_name_1, access_code_1 = create_class_directly(email_1) _, class_name_2, access_code_2 = create_class_directly(email_2) student_name_1, student_password_1, _ = create_school_student_directly( access_code_1) student_name_2, student_password_2, _ = create_school_student_directly( access_code_1) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email_1, password_1) page = page.go_to_classes_page().go_to_class_page(class_name_1) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student(student_name_1) page = move_students(page, 0) assert page.has_students() assert page.student_does_not_exist(student_name_1) assert page.student_exists(student_name_2) page = page.logout().go_to_teach_page().login(email_2, password_2) page = page.go_to_classes_page().go_to_class_page(class_name_2) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_does_not_exist(student_name_2)
def test_dismiss(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name_1, student_password_1, _ = create_school_student_directly(access_code) student_name_2, student_password_2, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.dismiss_students_none_selected() assert self.is_class_page(page) page = page.toggle_select_student(student_name_1).dismiss_students() assert page.__class__.__name__ == 'TeachDismissStudentsPage' page = page.cancel() assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student(student_name_1) page, emails = dismiss_students(page) assert page.has_students() assert page.student_does_not_exist(student_name_1) assert page.student_exists(student_name_2)
def test_dismiss(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name_1, student_password_1, _ = create_school_student_directly( access_code) student_name_2, student_password_2, _ = create_school_student_directly( access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.dismiss_students_none_selected() assert self.is_class_page(page) page = page.toggle_select_student(student_name_1).dismiss_students() assert page.__class__.__name__ == 'TeachDismissStudentsPage' page = page.cancel() assert page.has_students() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student(student_name_1) page, emails = dismiss_students(page) assert page.has_students() assert page.student_does_not_exist(student_name_1) assert page.student_exists(student_name_2)
def test_join(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) selenium.get(self.live_server_url) page = ( HomePage(selenium) .go_to_teach_page() .login(email_2, password_2) .go_to_organisation_create_or_join_page() .join_organisation(name) ) page = page.logout().go_to_teach_page().login(email_1, password_1).go_to_organisation_manage_page() assert page.has_join_request(email_2) page = page.accept_join_request(email_2) assert page.has_no_join_requests() assert page.number_of_members() == 2 assert page.number_of_admins() == 1 page = page.logout().go_to_teach_page().login(email_2, password_2).go_to_organisation_manage_page() assert page.check_organisation_name(name) assert page.is_not_admin_view()
def test_login_failure(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_teach_page() page = page.login_failure('*****@*****.**', 'Incorrect password') assert page.has_login_failed() assert self.is_teach_page(page)
def test_reset_password(self): homepage = self.go_to_homepage() username = create_independent_student(homepage)[2] page = self.get_to_forgotten_password_page() page.reset_username_submit(username) self.wait_for_email() page = email_utils.follow_reset_email_link(selenium, mail.outbox[0]) new_password = '******' page.reset_password(new_password) selenium.get(self.live_server_url) page = self \ .go_to_homepage() \ .go_to_play_page() \ .go_to_independent_form() \ .independent_student_login(username, new_password) assert self.is_independent_student_details(page)
def test_change_password(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_play_page()\ .school_login(student_name, access_code, student_password)\ .go_to_account_page() new_password = '******' + student_password page = page.change_account_details({ 'password': new_password, 'confirm_password': new_password, 'current_password': student_password }) page = page.logout()\ .go_to_play_page()\ .school_login_incorrect(student_name, access_code, student_password) assert page.school_login_has_failed() page = page.school_login(student_name, access_code, new_password) assert self.is_dashboard(page)
def test_edit_details(self): email, password = signup_teacher_directly() name, postcode = create_organisation_directly(email) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_teach_page()\ .login(email, password)\ .go_to_organisation_manage_page() assert page.check_organisation_details({ 'name': name, 'postcode': postcode }) new_name = 'new ' + name new_postcode = 'OX2 6LE' page.change_organisation_details({ 'name': new_name, 'postcode': new_postcode }) assert page.check_organisation_details({ 'name': new_name, 'postcode': new_postcode })
def test_login_failure(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_login_page() page = page.login_failure('*****@*****.**', 'Incorrect password') assert page.has_login_failed('form-login-teacher', 'Incorrect email address or password')
def test_contact_fail(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_help_and_support_page() page = page.send_empty_message() assert page.was_form_empty("contact_form")
def test_contact(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_help_and_support_page() page = page.send_message() assert is_contact_message_sent_message_showing(selenium)
def test_login_failure(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_teach_page() page = page.login_failure('*****@*****.**', 'Incorrect password') assert page.has_login_failed() assert self.is_teach_page(page)
def test_teach(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_teach_page() page = page.go_to_student_login_page().go_to_teach_page() page = page.go_to_forgotten_password_page().cancel().go_to_teach_page()
def test_teach(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_teach_page() page = page.go_to_student_login_page().go_to_teach_page() page = page.go_to_forgotten_password_page().cancel().go_to_teach_page()
def test_create_empty(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_login_page().login_no_students(email, password).create_students_empty() assert page.was_form_empty('form-create-students')
def test_create_empty(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_login_page().login_no_school( email, password) page = page.create_organisation_empty() assert page.was_form_empty('form-create-organisation')
def test_base(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_about_page() page = page.go_to_contact_page() page = page.go_to_terms_page() page = page.go_to_help_page() page = page.go_to_play_page() page = page.go_to_teach_page()
def test_create(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_login_page().login_no_school( email, password) page, name, postcode = create_organisation(page, password) assert is_organisation_created_message_showing(selenium, name)
def test_base(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_about_page() page = page.go_to_contact_page() page = page.go_to_terms_page() page = page.go_to_help_page() page = page.go_to_play_page() page = page.go_to_teach_page()
def test_create_invalid_postcode(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_login_page().login_no_school( email, password) page = page.create_organisation_failure('School', password, ' ') assert page.was_postcode_invalid()
def test_join_empty(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium) \ .go_to_login_page() \ .login_no_school(email, password) \ .join_empty_organisation() assert page.__class__.__name__ == 'OnboardingOrganisationPage'
def test_login_success(self): email, password = signup_teacher_directly() create_organisation_directly(email) klass, name, access_code = create_class_directly(email) create_school_student_directly(access_code) selenium.get(self.live_server_url + "/portal/redesign/home") page = HomePage(selenium) page = page.go_to_login_page() page = page.login(email, password) assert self.is_dashboard_page(page)
def test_signup_duplicate_failure(self): selenium.get(self.live_server_url) page = HomePage(selenium) page, email, _ = signup_teacher(page) assert is_email_verified_message_showing(selenium) selenium.get(self.live_server_url) page = HomePage(selenium) page, _, _ = signup_duplicate_teacher_fail(page, email) assert page.__class__.__name__ == 'LoginPage'
def test_create(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) selenium.get(self.live_server_url + "/portal/redesign/home") page = HomePage(selenium).go_to_login_page().login_no_students( email, password) page, student_name = create_school_student(page) assert page.student_exists(student_name)
def test_login(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_play_page()\ .school_login(student_name, access_code, student_password) assert self.is_dashboard(page)
def test_login(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_login_page()\ .student_login(student_name, access_code, student_password) assert self.is_dashboard(page)
def test_create_clash(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) selenium.get(self.live_server_url) page = HomePage(selenium) \ .go_to_login_page() \ .login_no_school(email_2, password_2) \ .create_organisation_failure(name, password_2, postcode) assert page.has_creation_failed()
def test_login_failure(self): email, password = signup_teacher_directly() create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_play_page()\ .school_login_incorrect(student_name, access_code, 'some other password') assert page.school_login_has_failed()
def test_create_clash(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) selenium.get(self.live_server_url) page = HomePage(selenium)\ .go_to_teach_page()\ .login(email_2, password_2)\ .go_to_organisation_create_or_join_page()\ .create_organisation_failure(name, password_2, postcode) assert page.has_creation_failed()
def _go_to_path(self, path): socket.setdefaulttimeout(20) attempts = 0 while True: try: selenium.get(self.live_server_url + path) except socket.timeout: attempts += 1 if attempts > 2: raise time.sleep(10) else: break
def test_create(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.does_not_have_students() page, student_name, student_password = create_school_student(page) assert page.has_students() assert page.student_exists(student_name)
def test_login_success(self): selenium.get(self.live_server_url) page = HomePage(selenium) page, email, password = signup_teacher(page) page = page.login(email, password) assert self.is_teacher_dashboard(page) page = page.go_to_account_page() assert page.check_account_details({ 'title': 'Mr', 'first_name': 'Test', 'last_name': 'Teacher', })
def test_revoke(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email_2, password_2).go_to_organisation_create_or_join_page() page = page.join_organisation(name) assert page.__class__.__name__ == "TeachOrganisationRevokePage" assert page.check_organisation_name(name, postcode) page = page.revoke_join() assert page.__class__.__name__ == "TeachOrganisationCreatePage"
def test_edit_details(self): email, password = signup_teacher_directly() name, postcode = create_organisation_directly(email) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password).go_to_organisation_manage_page() assert page.check_organisation_details({"name": name, "postcode": postcode}) new_name = "new " + name new_postcode = "OX2 6LE" page.change_organisation_details({"name": new_name, "postcode": new_postcode}) assert page.check_organisation_details({"name": new_name, "postcode": new_postcode})
def test_edit_clash(self): email_1, password_1 = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name_1, postcode_1 = create_organisation_directly(email_1) name_2, postcode_2 = create_organisation_directly(email_2) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email_2, password_2).go_to_organisation_manage_page() assert not page.check_organisation_details({"name": name_1, "postcode": postcode_1}) page = page.change_organisation_details({"name": name_1, "postcode": postcode_1}) assert page.has_edit_failed()
def test_create(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page, name, postcode = create_organisation(page, password) assert is_organisation_created_message_showing(selenium, name) page = page.go_to_organisation_manage_page() assert page.is_admin_view() assert page.number_of_members() == 1 assert page.number_of_admins() == 1 assert page.check_organisation_details({"name": name, "postcode": postcode})
def test_create_already_exists(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name) page = page.type_student_name(student_name).create_students_failure() assert self.is_class_page(page) assert page.adding_students_failed() assert page.student_already_existed(student_name) assert page.has_students() assert page.student_exists(student_name)
def test_reset_password(self): email, password = signup_teacher_directly() page = self.get_to_forgotten_password_page() page.reset_email_submit(email) self.wait_for_email() page = email_utils.follow_reset_email_link(selenium, mail.outbox[0]) new_password = '******' page.reset_password(new_password) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, new_password) assert self.is_teacher_dashboard(page)
def test_change_password(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_account_page() new_password = '******' page = page.change_teacher_details({ 'password': new_password, 'confirm_password': new_password, 'current_password': password, }) assert self.is_teacher_dashboard(page) assert is_teacher_details_updated_message_showing(selenium) page = page.logout().go_to_teach_page().login(email, new_password) assert self.is_teacher_dashboard(page)
def test_create_duplicate(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name = 'bob' selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.does_not_have_students() assert page.student_does_not_exist(student_name) page = page.type_student_name(student_name).type_student_name(student_name).create_students_failure() assert self.is_class_page(page) assert page.adding_students_failed() assert page.duplicate_students(student_name) assert page.does_not_have_students() assert page.student_does_not_exist(student_name)
def test_move_cancel(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name) page = page.move_students_none_selected() assert self.is_class_page(page) page = page.toggle_select_student(student_name).move_students() assert page.__class__.__name__ == 'TeachMoveStudentsPage' assert page.get_list_length() == 0 page = page.cancel()
def test_list_stations_visible_on_map(self): # Visit site and wait until three stations are shown selenium.get(self.live_server_url) self.td_komboti.wait_until_is_displayed() self.td_agios_athanasios.wait_until_is_displayed() self.td_tharbad.wait_until_is_displayed() # Zoom station to an area that covers only two of these stations. # The co-ordinates below are 21, 39, 22, 40 in srid=3857. selenium.execute_script(""" enhydris.map.zoomToExtent([2337700, 4721700, 2449000, 4865900]); """) # Click on "List stations visible on map" self.button_limit_to_map.click() # Now only two stations should be displayed self.td_komboti.wait_until_is_displayed() self.td_agios_athanasios.wait_until_is_displayed() self.assertFalse(self.td_tharbad.exists())
def test_play(self): selenium.get(self.live_server_url) page = HomePage(selenium) page = page.go_to_play_page() page = page.go_to_teacher_login().go_to_play_page() page.show_independent_student_login() page = page.go_to_teacher_login().go_to_play_page() page.show_school_login() assert page.is_in_school_login_state() assert page.not_showing_intependent_student_signup_form() page.show_independent_student_login() assert page.is_in_independent_student_login_state() assert page.not_showing_intependent_student_signup_form() page.show_school_login() assert page.is_in_school_login_state() assert page.not_showing_intependent_student_signup_form() page.show_independent_student_signup() assert page.is_in_school_login_state() assert page.showing_intependent_student_signup_form() page.show_independent_student_login() assert page.is_in_independent_student_login_state() assert page.showing_intependent_student_signup_form() page.show_school_login() assert page.is_in_school_login_state() assert page.showing_intependent_student_signup_form() page.show_independent_student_login() page = page.go_to_forgotten_password_page().cancel().go_to_play_page()
def test_edit_details(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_account_page() page = page.change_teacher_details({ 'title': 'Mrs', 'first_name': 'Paulina', 'last_name': 'Koch', 'current_password': '******', }) assert self.is_teacher_dashboard(page) assert is_teacher_details_updated_message_showing(selenium) page = page.go_to_account_page() assert page.check_account_details({ 'title': 'Mrs', 'first_name': 'Paulina', 'last_name': 'Koch', })
def test_change_email(self): email, password = signup_teacher_directly() selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_account_page() new_email = '*****@*****.**' page = page.change_email(new_email, password) assert page.__class__.__name__ == 'EmailVerificationNeededPage' assert is_teacher_email_updated_message_showing(selenium) page = email_utils.follow_change_email_link_to_teach(page, mail.outbox[0]) mail.outbox = [] page = page.login(new_email, password) page = page.go_to_account_page() assert page.check_account_details({ 'title': 'Mr', 'first_name': 'Test', 'last_name': 'Teacher', })
def test_delete(self): email, password = signup_teacher_directly() org_name, postcode = create_organisation_directly(email) _, class_name, access_code = create_class_directly(email) student_name, student_password, _ = create_school_student_directly(access_code) selenium.get(self.live_server_url) page = HomePage(selenium).go_to_teach_page().login(email, password) page = page.go_to_classes_page().go_to_class_page(class_name) assert page.has_students() assert page.student_exists(student_name) page = page.toggle_select_student(student_name).delete_students() assert page.is_dialog_showing() page = page.cancel_dialog() assert not page.is_dialog_showing() assert page.has_students() assert page.student_exists(student_name) page = page.delete_students() assert page.is_dialog_showing() page = page.confirm_dialog_expect_error() assert page.does_not_have_students() assert page.student_does_not_exist(student_name)
def test_signup(self): selenium.get(self.live_server_url) page = HomePage(selenium) page, _, _ = signup_teacher(page) assert is_email_verified_message_showing(selenium)