예제 #1
0
    def test_factory(self):
        resource = CourseResourceFactory()

        assert resource.uuid is not None
        assert resource.title != ""
        assert resource.details != ""
        assert resource.course is not None
예제 #2
0
    def test_course_copy_tasks_resources(self):
        """Copying a course includes the tasks, graded work, and resources."""
        user = self.make_user()
        grade_level = GradeLevelFactory(school_year__school=user.school)
        course_to_copy = CourseFactory(grade_levels=[grade_level])
        CourseTaskFactory(course=course_to_copy)
        graded_task = CourseTaskFactory(course=course_to_copy)
        GradedWorkFactory(course_task=graded_task)
        CourseResourceFactory(course=course_to_copy)
        data = {
            "name": "Course name",
            "wednesday": "on",
            "friday": "on",
            "grade_levels": str(grade_level.id),
            "default_task_duration": 45,
        }
        url = self.reverse("courses:create")
        url += f"?copy_from={course_to_copy.id}"

        with self.login(user):
            self.post(url, data=data)

        assert Course.objects.count() == 2
        copied_course = Course.objects.last()
        assert copied_course.id != course_to_copy.id
        assert CourseTask.objects.filter(course=copied_course).count() == 2
        new_graded_task = CourseTask.objects.filter(course=copied_course).last()
        assert hasattr(new_graded_task, "graded_work")
        assert CourseResource.objects.filter(course=copied_course).count() == 1
예제 #3
0
    def test_get_other_user(self):
        """A user may not edit another user's resource."""
        user = self.make_user()
        resource = CourseResourceFactory()

        with self.login(user):
            response = self.get("courses:resource_edit", pk=resource.id)

        self.response_404(response)
예제 #4
0
    def test_post_other_user(self):
        """A user may not delete another user's resource."""
        user = self.make_user()
        course = CourseFactory()
        resource = CourseResourceFactory(course=course)

        with self.login(user):
            response = self.post("courses:resource_delete", pk=resource.id)

        self.response_404(response)
예제 #5
0
    def test_get(self):
        user = self.make_user()
        grade_level = GradeLevelFactory(school_year__school=user.school)
        resource = CourseResourceFactory(course__grade_levels=[grade_level])

        with self.login(user):
            self.get_check_200("courses:resource_edit", pk=resource.id)

        assert not self.get_context("create")
        assert self.get_context("course") == resource.course
예제 #6
0
    def test_post(self):
        user = self.make_user()
        grade_level = GradeLevelFactory(school_year__school=user.school)
        course = CourseFactory(grade_levels=[grade_level])
        resource = CourseResourceFactory(course=course)

        with self.login(user):
            response = self.post("courses:resource_delete", pk=resource.id)

        assert CourseResource.objects.count() == 0
        self.response_302(response)
        assert response.get("Location") == self.reverse("courses:detail", pk=course.id)
예제 #7
0
    def test_get(self):
        user = self.make_user()
        enrollment = EnrollmentFactory(
            grade_level__school_year__school=user.school)
        course = CourseFactory(grade_levels=[enrollment.grade_level])
        resource = CourseResourceFactory(course=course)

        with self.login(user):
            self.get_check_200("reports:resource", pk=enrollment.id)

        assert self.get_context("grade_level") == enrollment.grade_level
        assert self.get_context(
            "school_year") == enrollment.grade_level.school_year
        assert self.get_context("student") == enrollment.student
        assert list(self.get_context("resources")) == [resource]
예제 #8
0
    def test_get(self):
        user = self.make_user()
        grade_level = GradeLevelFactory(school_year__school=user.school)
        course = CourseFactory(grade_levels=[grade_level])
        task = CourseTaskFactory(course=course)
        GradeFactory(graded_work__course_task=task)
        CourseworkFactory(course_task=task)
        CourseResourceFactory(course=course)

        with self.login(user):
            self.get_check_200("courses:delete", pk=course.id)

        assert self.get_context("tasks_count") == 1
        assert self.get_context("grades_count") == 1
        assert self.get_context("coursework_count") == 1
        assert self.get_context("course_resources_count") == 1
예제 #9
0
    def test_post(self):
        user = self.make_user()
        grade_level = GradeLevelFactory(school_year__school=user.school)
        resource = CourseResourceFactory(course__grade_levels=[grade_level])
        data = {
            "course": str(resource.course.id),
            "title": "Charlotte's Web",
            "details": "That's some pig.",
        }

        with self.login(user):
            response = self.post("courses:resource_edit", pk=resource.id, data=data)

        assert CourseResource.objects.count() == 1
        resource = CourseResource.objects.get(course=resource.course)
        assert resource.title == data["title"]
        assert resource.details == data["details"]
        self.response_302(response)
        assert response.get("Location") == self.reverse(
            "courses:detail", pk=resource.course.id
        )
예제 #10
0
 def test_unauthenticated_access(self):
     resource = CourseResourceFactory()
     self.assertLoginRequired("courses:resource_delete", pk=resource.id)
예제 #11
0
    def test_str(self):
        resource = CourseResourceFactory()

        assert str(resource) == resource.title
예제 #12
0
 def test_unauthenticated_access(self):
     resource = CourseResourceFactory()
     self.assertLoginRequired("courses:resource_edit", uuid=resource.uuid)