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',
        })
Beispiel #2
0
    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',
        })
Beispiel #8
0
    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)
Beispiel #9
0
    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()
Beispiel #10
0
    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
        })
Beispiel #11
0
    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)
Beispiel #12
0
    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
        })
Beispiel #13
0
    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')
Beispiel #29
0
    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()
Beispiel #31
0
    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()
Beispiel #33
0
    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()
Beispiel #34
0
    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'
Beispiel #37
0
    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)
Beispiel #39
0
    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)
Beispiel #40
0
    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()
Beispiel #55
0
    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)