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_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 ) self.selenium.get(self.live_server_url) page = HomePage(self.selenium).go_to_login_page().login(email_1, password_1) page = page.go_to_class_page() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student() page = page.move_students().select_class_by_index(0).move().move() assert not page.student_exists(student_name_1) page = page.go_to_dashboard() page = page.go_to_top().logout().go_to_login_page().login(email_2, password_2) page = page.go_to_class_page() assert page.student_exists(student_name_1)
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) self.browser.get(self.live_server_url) page = HomePage(self.browser).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_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) _, _, access_code_1 = create_class_directly(email_1) _, _, _ = create_class_directly(email_2) student_name_1, _, _ = create_school_student_directly(access_code_1) student_name_2, _, _ = create_school_student_directly(access_code_1) self.selenium.get(self.live_server_url) page = HomePage(self.selenium).go_to_login_page().login( email_1, password_1) page = page.go_to_class_page() assert page.student_exists(student_name_1) assert page.student_exists(student_name_2) page = page.toggle_select_student() page = page.move_students().select_class_by_index(0).move().move() assert not page.student_exists(student_name_1) page = page.go_to_dashboard() page = page.go_to_top().logout().go_to_login_page().login( email_2, password_2) page = page.go_to_class_page() assert page.student_exists(student_name_1)
def test_edit_details_non_admin(self): email_1, _ = signup_teacher_directly() email_2, password_2 = signup_teacher_directly() name, postcode = create_organisation_directly(email_1) _, _, access_code_1 = create_class_directly(email_1) create_school_student_directly(access_code_1) join_teacher_to_organisation(email_2, name, postcode) _, _, access_code_2 = create_class_directly(email_2) create_school_student_directly(access_code_2) self.selenium.get(self.live_server_url) page = HomePage(self.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(self.selenium) assert page.check_account_details( {"title": "Mr", "first_name": "Florian", "last_name": "Aucomte"} )
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_moved_student_has_access_to_only_new_teacher_games(self): """ Given a student in a class, When a teacher transfers them to another class with a new teacher, Then the student should only have access to the new teacher's games """ email1, password1 = signup_teacher_directly() school_name, postcode = create_organisation_directly(email1) klass1, _, access_code1 = create_class_directly(email1, True) create_school_student_directly(access_code1) email2, password2 = signup_teacher_directly() join_teacher_to_organisation(email2, school_name, postcode) klass2, _, access_code2 = create_class_directly(email2, True) create_school_student_directly(access_code2) teacher1 = Teacher.objects.get(new_user__email=email1) teacher2 = Teacher.objects.get(new_user__email=email2) c = Client() c.login(username=email2, password=password2) c.post(reverse("kurono"), {"name": "Game 2"}) c.logout() c.login(username=email1, password=password1) c.post(reverse("kurono"), {"name": "Game 1"}) game1 = Game.objects.get(owner=teacher1.new_user) game2 = Game.objects.get(owner=teacher2.new_user) student1 = Student.objects.get(class_field=klass1) student2 = Student.objects.get(class_field=klass2) self.assertTrue(student1.new_user in game1.can_play.all()) self.assertTrue(student2.new_user in game2.can_play.all()) c.post( reverse("teacher_move_students", kwargs={"access_code": access_code1}), {"transfer_students": student1.pk}, ) c.post( reverse( "teacher_move_students_to_class", kwargs={"access_code": access_code1} ), { "form-0-name": student1.user.user.first_name, "form-MAX_NUM_FORMS": 1000, "form-0-orig_name": student1.user.user.first_name, "form-TOTAL_FORMS": 1, "form-MIN_NUM_FORMS": 0, "submit_disambiguation": "", "form-INITIAL_FORMS": 1, "new_class": klass2.pk, }, ) c.logout() self.assertTrue(student1.new_user not in game1.can_play.all()) self.assertTrue(student1.new_user in game2.can_play.all())
def test_create_dashboard_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) page = self.go_to_homepage().go_to_login_page().login(email_2, password_2) page, class_name_3 = create_class(page) assert is_class_created_message_showing(self.selenium, class_name_3)
def test_create_dashboard_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) page = self.go_to_homepage().go_to_login_page().login( email_2, password_2) page, class_name_3 = create_class(page) assert is_class_created_message_showing(self.selenium, class_name_3)
def test_transfer(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, access_code = create_class_directly(email_1) student_name, student_password, _ = create_school_student_directly(access_code) page = self.go_to_homepage().go_to_login_page().login(email_1, password_1) page = page.go_to_class_page().go_to_class_settings_page() page = transfer_class(page, 0) assert page.does_not_have_classes() page = page.logout().go_to_login_page().login(email_2, password_2) assert page.does_class_exist(class_name, access_code) page = page.go_to_class_page() assert page.has_students() assert page.student_exists(student_name)
def test_move_cancel_disambiguate(self): old_teacher_email, password_1 = signup_teacher_directly() email_2, _ = signup_teacher_directly() org_name, postcode = create_organisation_directly(old_teacher_email) join_teacher_to_organisation(email_2, org_name, postcode) _, _, access_code_1 = create_class_directly(old_teacher_email) _, _, _ = create_class_directly(email_2) student_name, _, _ = create_school_student_directly(access_code_1) self.selenium.get(self.live_server_url) page = (HomePage(self.selenium).go_to_login_page().login( old_teacher_email, password_1)) page = page.go_to_class_page() assert page.has_students() assert page.student_exists(student_name) page = page.toggle_select_student() page = page.move_students().select_class_by_index(0).move().cancel() assert page.has_students() assert page.student_exists(student_name)
def test_transfer(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, access_code = create_class_directly(email_1) student_name, student_password, _ = create_school_student_directly( access_code) page = self.go_to_homepage().go_to_login_page().login( email_1, password_1) page = page.go_to_class_page().go_to_class_settings_page() page = transfer_class(page, 0) assert page.does_not_have_classes() page = page.logout().go_to_login_page().login(email_2, password_2) assert page.does_class_exist(class_name, access_code) page = page.go_to_class_page() assert page.has_students() assert page.student_exists(student_name)
def test_disable_2FA(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) join_teacher_to_organisation(email_2, name, postcode) selenium.get(self.live_server_url) page = HomePage(selenium) \ .go_to_login_page() \ .login(email_1, password_1) assert page.__class__.__name__ == 'TeachDashboardPage' page = page.click_make_admin_button().confirm_dialog() assert page.is_teacher_admin() page = page.click_make_non_admin_button() assert page.is_teacher_non_admin()