def test_moderation_another_class(self): email, password = signup_teacher_directly() email2, _ = signup_teacher_directly() klass2, _, access_code = create_class_directly(email2) student_name, _, student = create_school_student_directly(access_code) self.login(email, password) response = self.students_of_class(klass2) assert_that(response.status_code, equal_to(404)) assert_that(response.content, empty)
def test_level_episode_on_delete(self): """ Given a level and an episode where the level is in the episode, When anyone tries to delete the episode, Then a ProtectedError is raised and the episode isn't deleted. """ teacher_email, teacher_password = signup_teacher_directly() teacher = Teacher.objects.get(new_user__email=teacher_email) level_id = create_save_level(teacher) level = Level.objects.get(id=level_id) episode_id = create_episode() episode = Episode.objects.get(id=episode_id) assert level.episode is None assert len(episode.levels) == 0 level.episode = episode level.save() assert len(episode.levels) == 1 with pytest.raises(ProtectedError): episode.delete()
def test_level_next_level_on_delete(self): """ Given two levels level1 and level2 where level2 is level1's next level, When level2 is deleted, Then level1's next_level field is set to null. """ teacher_email, teacher_password = signup_teacher_directly() teacher = Teacher.objects.get(new_user__email=teacher_email) level1_id = create_save_level(teacher) level2_id = create_save_level(teacher) level1 = Level.objects.get(id=level1_id) level2 = Level.objects.get(id=level2_id) assert level1.next_level is None assert level2.next_level is None level1.next_level = level2 level1.save() level2.delete() level1 = Level.objects.get(id=level1_id) assert level1.next_level is None
def test_level_sharing_with_school(self): email1, password1 = signup_teacher_directly() email2, _ = signup_teacher_directly() teacher1 = Teacher.objects.get(new_user__email=email1) teacher2 = Teacher.objects.get(new_user__email=email2) self.login(email1, password1) level_id = create_save_level(teacher1) school1 = create_school() add_teacher_to_school(teacher1, school1) add_teacher_to_school(teacher2, school1) sharing_info1 = json.loads( self.get_sharing_information(level_id).getvalue()) assert_that(len(sharing_info1["teachers"]), equal_to(1))
def test_anonymous_level_saving_school_student(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) self.student_login(student_name, access_code, student_password) url = reverse("save_level_for_editor") data1 = { u"origin": u'{"coordinate":[3,5],"direction":"S"}', u"pythonEnabled": False, u"decor": [], u"blocklyEnabled": True, u"blocks": [ { u"type": u"move_forwards" }, { u"type": u"turn_left" }, { u"type": u"turn_right" }, ], u"max_fuel": u"50", u"pythonViewEnabled": False, u"character": u"3", u"name": u"abc", u"theme": 1, u"anonymous": True, u"cows": u"[]", u"path": u'[{"coordinate":[3,5],"connectedNodes":[1]},{"coordinate":[3,4],' u'"connectedNodes":[0]}]', u"traffic_lights": u"[]", u"destinations": u"[[3,4]]", } response = self.client.post(url, {"data": json.dumps(data1)}) assert_that(response.status_code, equal_to(200)) sharing_info1 = json.loads( self.get_sharing_information(json.loads( response.content)["id"]).getvalue()) assert_that(sharing_info1["teacher"]["shared"], equal_to(True)) assert_that(len(mail.outbox), equal_to(0))
def set_up_data(classmates_data_viewable=False): email, password = signup_teacher_directly() clas, class_name, access_code = create_class_directly(email) if classmates_data_viewable: clas.classmates_data_viewable = True clas.save() _, _, student = create_school_student_directly(access_code) _, _, student2 = create_school_student_directly(access_code) create_random_school_data() return clas, student, student2
def test_scoreboard_loads(self): email, password = signup_teacher_directly() create_organisation_directly(email) klass, name, access_code = create_class_directly(email) create_school_student_directly(access_code) url = reverse("scoreboard") c = Client() c.login(username=email, password=password) response = c.get(url) self.assertEqual(200, response.status_code)
def test_level_loading(self): email1, password1 = signup_teacher_directly() teacher1 = Teacher.objects.get(new_user__email=email1) self.login(email1, password1) level_id = create_save_level(teacher1) url = reverse("load_level_for_editor", kwargs={"levelID": level_id}) response = self.client.get(url) assert_that(response.status_code, equal_to(200))
def test_level_can_only_be_shared_by_owner(self): email1, password1 = signup_teacher_directly() email2, password2 = signup_teacher_directly() teacher1 = Teacher.objects.get(new_user__email=email1) teacher2 = Teacher.objects.get(new_user__email=email2) self.login(email1, password1) level_id = create_save_level(teacher1) school1 = create_school() add_teacher_to_school(teacher1, school1) self.logout() self.login(email2, password2) url = reverse("share_level_for_editor", args=[level_id]) data = {u"recipientIDs[]": [teacher2.id], u"action": ["share"]} response = self.client.post(url, {"data": data}) assert_that(response.status_code, equal_to(403))
def test_moderation_teachers_class(self): email, password = signup_teacher_directly() klass, name, access_code = create_class_directly(email) student_name, _, student = create_school_student_directly(access_code) self.login(email, password) response = self.students_of_class(klass) assert_that(response.status_code, equal_to(200)) assert_that( response.content.decode(), equal_to('{"%s": "%s"}' % (student.id, student_name)), )
def login_once(self): if not BaseGameTest.already_logged_on: email, password = signup_teacher_directly() create_organisation_directly(email) klass, name, access_code = create_class_directly(email) create_school_student_directly(access_code) login_page = self.go_to_homepage().go_to_teacher_login_page() login_page.login(email, password) email = email BaseGameTest.user_profile = UserProfile.objects.get(user__email=email) BaseGameTest.already_logged_on = True return BaseGameTest.user_profile
def student_row(self, class_name=None): email, password = signup_teacher_directly() _, class_name, access_code = create_class_directly(email, class_name) _, _, student = create_school_student_directly(access_code) total_time = timedelta(0, 30) scores = [x for x in range(20)] total_score = sum(scores) progress = (0, 0, 0) all_scores = scores + [""] * 89 row = StudentRow( student=student, total_time=total_time, total_score=total_score, start_time=datetime.fromtimestamp(1435305072, tz=utc), finish_time=datetime.fromtimestamp(1438305072, tz=utc), progress=progress, scores=all_scores, class_field=Class(name="MyClass"), ) return row
def teacher1_email(db) -> str: email, _ = signup_teacher_directly() return email
def create_random_school_data(): email, password = signup_teacher_directly() clas, class_name, access_code = create_class_directly(email) create_school_student_directly(access_code) create_school_student_directly(access_code)