def test_update_course_roles(self): """Test update course roles""" teacher_user, teacher_pass, teacher = test.set_up_user_and_auth( 'Teacher', 'pass', '*****@*****.**') teacher_role = factory.make_role_teacher("TE", self.course) factory.make_role_ta('TA2', self.course) factory.make_participation(teacher, self.course, teacher_role) login = test.logging_in(self, teacher_user, teacher_pass) result = test.api_get_call(self, '/roles/', login, params={'course_id': self.course.pk}) roles = result.json()['roles'] for role in roles: if role['name'] == 'TA2': role['can_grade'] = 1 roles.append( serialize.RoleSerializer( factory.make_role_default_no_perms('test_role', self.course)).data) test.api_patch_call(self, '/roles/{}/'.format(self.course.pk), {'roles': roles}, login) role_test = Role.objects.get(name='TA2', course=self.course) self.assertTrue(role_test.can_grade) self.assertEquals( Role.objects.filter(name='test_role', course=self.course).count(), 1)
def gen_courses(self): """Generate courses.""" courses_examples = [ { "pk": 1697, "name": "Portfolio Academische Vaardigheden 1", "abbr": "PAV1", "students": [0, 1, 2, 3, 4], "teachers": [5], "start_date": faker.date("2018-09-01"), "end_date": faker.date("2019-09-01"), }, { "pk": 1698, "name": "Portfolio Academische Vaardigheden 2", "abbr": "PAV2", "students": [0, 1, 2, 3, 4], "teachers": [5], "start_date": faker.date("2018-09-01"), "end_date": faker.date("2019-09-01"), } ] self.courses = [] for c in courses_examples: author = self.users[c["teachers"][0]] course = Course(pk=c["pk"], name=c["name"], abbreviation=c["abbr"], startdate=c["start_date"], enddate=c["end_date"], author=author) course.save() factory.make_role_student('Student', course) factory.make_role_ta('TA', course) factory.make_role_teacher('Teacher', course) role_teacher = Role.objects.get(name='Teacher', course=course) role_student = Role.objects.get(name='Student', course=course) for sid in c["students"]: factory.make_participation(self.users[sid], course, role_student) for cid in c["teachers"]: factory.make_participation(self.users[cid], course, role_teacher) self.courses.append(course)
def gen_courses(self): """Generate courses.""" courses_examples = { "Portfolio Academische Vaardigheden - Cohort 1": { "pk": 1697, "name": "Portfolio Academische Vaardigheden - Cohort 1", "abbr": "PAV1", "author": self.users["Teacher"], "students": [self.users[s] for s in ["Student", "Student2", "Student3", "Student4", "Student5", "TestUser"]], "teachers": [self.users["Teacher"]], "tas": [self.users["TA"]], "start_date": faker.date("2018-09-01"), "end_date": faker.date("2021-07-31"), "student_group_names": ["Cobol", "Smalltalk"] }, "Portfolio Academische Vaardigheden - Cohort 2": { "pk": 1698, "name": "Portfolio Academische Vaardigheden - Cohort 2", "abbr": "PAV2", "author": self.users["Teacher"], "students": [self.users[s] for s in ["Student", "Student2", "Student3", "Student4", "Student5", "TestUser"]], "teachers": [self.users["Teacher"]], "tas": [self.users["TA2"]], "start_date": faker.date("2019-09-01"), "end_date": faker.date("2022-07-31"), "student_group_names": ["Algol", "Ruby"] } } self.courses = {} for c in courses_examples.values(): course = Course(pk=c["pk"], name=c["name"], abbreviation=c["abbr"], startdate=c["start_date"], enddate=c["end_date"], author=c["author"]) course.save() student_groups = [factory.make_course_group(g, course) for g in c["student_group_names"]] staff_group = factory.make_course_group("Staff", course) role_student = factory.make_role_student('Student', course) role_ta = factory.make_role_ta('TA', course) role_teacher = factory.make_role_teacher('Teacher', course) for student in c["students"]: factory.make_participation(student, course, role_student, [random.choice(student_groups)]) for ta in c["tas"]: factory.make_participation(ta, course, role_ta, [random.choice(student_groups)]) for teacher in c["teachers"]: factory.make_participation(teacher, course, role_teacher, [staff_group]) self.courses[c["name"]] = course
def test_delete_course_role(self): """Test delete course roles""" teacher_user = '******' teacher_pass = '******' teacher = factory.make_user(teacher_user, teacher_pass, "*****@*****.**") teacher_role = factory.make_role_teacher("TE", self.course) factory.make_participation(teacher, self.course, teacher_role) factory.make_role_ta('TA2', self.course) login = test.logging_in(self, teacher_user, teacher_pass) test.api_del_call(self, '/roles/' + str(self.course.pk) + '/?name=TA2', login) self.assertEquals( Role.objects.filter( name='TA2', course=Course.objects.get(pk=self.course.pk)).count(), 0)
def test_update_assignment(self): """Test update assignment""" teacher_user, teacher_pass, teacher = test.set_up_user_and_auth( 'Teacher', 'pass', '*****@*****.**') teacher_role = factory.make_role_teacher("TE", self.course) factory.make_participation(teacher, self.course, teacher_role) assign = test.set_up_assignments('Assign', '', 1, self.course)[0] login = test.logging_in(self, teacher_user, teacher_pass) test.api_patch_call(self, '/assignments/' + str(assign.pk) + '/', { 'name': 'Assign2', 'description': 'summary', 'is_published': True }, login) assign = Assignment.objects.get(pk=assign.pk) self.assertEquals(assign.name, 'Assign2') self.assertEquals(assign.description, 'summary')
def test_get_course_roles(self): """Test the get delete assignment function.""" teacher_user = '******' teacher_pass = '******' teacher = factory.make_user(teacher_user, teacher_pass, "*****@*****.**") factory.make_role_student("SD", self.course) factory.make_role_default_no_perms("HE", self.course) teacher_role = factory.make_role_teacher("TE", self.course) factory.make_participation(teacher, self.course, teacher_role) login = test.logging_in(self, teacher_user, teacher_pass) result = test.api_get_call(self, '/roles/', login, params={'course_id': self.course.pk}) self.assertEquals(len(result.json()['roles']), 6) # permissions and authorization check for the api call. login = test.logging_in(self, self.no_perm_user, self.no_perm_pass) test.test_unauthorized_api_get_call(self, '/roles/', params={'course_id': 1}) test.api_get_call(self, '/roles/', login, params={'course_id': self.course.pk}, status=403) test.api_get_call(self, '/roles/', login, params={'course_id': self.not_found_pk}, status=404) test.set_up_participation(self.no_permission_user, self.course, 'Student') test.api_get_call(self, '/roles/', login, params={'course_id': self.course.pk}, status=403)