Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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
Пример #4
0
    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)
Пример #5
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')
Пример #6
0
    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)