Example #1
0
class CourseTests(TestCase):
    def setUp(self):
        self.c = CourseFactory()

    def test_is_valid_from_factory(self):
        self.c.full_clean()
        self.c.info.full_clean()
Example #2
0
    def test_create_without_spine_with_track_elements(self):
        course = CourseFactory()
        project = ProjectFactory()
        note = SherdNoteFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': '',
                'project': project.pk,
                'media_elements': [
                    {
                        'media': note.pk,
                        'start_time': Decimal('0'),
                        'end_time': Decimal('10'),
                    }
                ],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': Decimal('0'),
                        'end_time': Decimal('10'),
                    }
                ]
            }, format='json')

        self.assertEqual(
            r.status_code, 400,
            'Attempting to create a SequenceAsset without a spine but '
            'with track elements should be invalid.')
Example #3
0
    def test_create(self):
        course = CourseFactory()
        note = SherdNoteFactory()
        project = ProjectFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': note.pk,
                'project': project.pk,
                'media_elements': [],
                'text_elements': [],
            }, format='json')

        self.assertEqual(r.status_code, 201)

        sa = SequenceAsset.objects.first()
        self.assertEqual(sa.course, sa.course)
        self.assertEqual(sa.author, self.u)
        self.assertEqual(sa.spine, note)

        self.assertEqual(ProjectSequenceAsset.objects.count(), 1)
        psa = ProjectSequenceAsset.objects.first()
        self.assertEqual(psa.sequence_asset, sa)
        self.assertEqual(psa.project, project)
Example #4
0
    def test_get_courses(self):
        course = CourseFactory()
        student = UserFactory()
        instructor = UserFactory()

        course.group.user_set.add(student)
        course.group.user_set.add(instructor)
        course.faculty_group.user_set.add(instructor)

        # as student
        lst = get_courses_for_user(student)
        self.assertEquals(len(lst), 1)
        self.assertTrue(course in lst)

        lst = get_courses_for_instructor(student)
        self.assertEquals(len(lst), 0)

        # as instructor
        lst = get_courses_for_user(instructor)
        self.assertEquals(len(lst), 1)
        self.assertTrue(course in lst)

        lst = get_courses_for_instructor(instructor)
        self.assertEquals(len(lst), 1)
        self.assertTrue(course in lst)
Example #5
0
    def test_create_with_track_elements_with_large_decimals(self):
        course = CourseFactory()
        note = SherdNoteFactory()
        note2 = SherdNoteFactory()
        project = ProjectFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': note.pk,
                'project': project.pk,
                'media_elements': [
                    {
                        'media': note2.pk,
                        'start_time': Decimal('0.9999999999992222'),
                        'end_time': Decimal('10.15955395959359395'),
                    }
                ],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': Decimal('0.19898591249142984912849218'),
                        'end_time': Decimal('10.853598923859285928598958392'),
                    },
                    {
                        'text': 'My text 2',
                        'start_time': Decimal('11'),
                        'end_time': Decimal('148744.835739573575'),
                    },
                ]
            }, format='json')

        self.assertEqual(r.status_code, 201)

        sa = SequenceAsset.objects.first()
        self.assertEqual(sa.course, sa.course)
        self.assertEqual(sa.author, self.u)
        self.assertEqual(sa.spine, note)

        self.assertEqual(ProjectSequenceAsset.objects.count(), 1)
        psa = ProjectSequenceAsset.objects.first()
        self.assertEqual(psa.sequence_asset, sa)
        self.assertEqual(psa.project, project)

        self.assertEqual(SequenceTextElement.objects.count(), 2)
        e0 = SequenceTextElement.objects.first()
        e1 = SequenceTextElement.objects.last()
        self.assertEqual(e0.text, 'My text')
        self.assertEqual(e0.start_time, Decimal('0.19899'))
        self.assertEqual(e0.end_time, Decimal('10.85360'))
        self.assertEqual(e1.text, 'My text 2')
        self.assertEqual(e1.start_time, Decimal('11'))
        self.assertEqual(e1.end_time, Decimal('148744.83574'))

        self.assertEqual(SequenceMediaElement.objects.count(), 1)
        e0 = SequenceMediaElement.objects.first()
        self.assertEqual(e0.media, note2)
        self.assertEqual(e0.start_time, Decimal('1.00000'))
        self.assertEqual(e0.end_time, Decimal('10.15955'))
Example #6
0
    def test_create_duplicate(self):
        course = CourseFactory()
        note = SherdNoteFactory()
        project = ProjectFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': note.pk,
                'project': project.pk,
                'media_elements': [
                ],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': Decimal('0'),
                        'end_time': Decimal('10'),
                    }
                ]
            }, format='json')

        self.assertEqual(r.status_code, 201)

        sa = SequenceAsset.objects.first()
        self.assertEqual(sa.course, sa.course)
        self.assertEqual(sa.author, self.u)
        self.assertEqual(sa.spine, note)

        self.assertEqual(ProjectSequenceAsset.objects.count(), 1)
        psa = ProjectSequenceAsset.objects.first()
        self.assertEqual(psa.sequence_asset, sa)
        self.assertEqual(psa.project, project)

        self.assertEqual(SequenceTextElement.objects.count(), 1)

        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': note.pk,
                'project': project.pk,
                'media_elements': [
                ],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': Decimal('0'),
                        'end_time': Decimal('10'),
                    }
                ]
            }, format='json')

        self.assertEqual(
            r.status_code, 400,
            'Creating two SequenceAssets for the same combination '
            'of author / project should be invalid.')
        self.assertEqual(SequenceAsset.objects.count(), 1)
Example #7
0
    def test_create(self):
        course = CourseFactory()
        author = UserFactory()
        note = SherdNoteFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'author': author.pk,
                'spine': note.pk,
                'media_elements': [],
                'text_elements': [],
            }, format='json')

        self.assertEqual(r.status_code, 403)
Example #8
0
    def test_create_with_track_elements_with_no_start_time(self):
        course = CourseFactory()
        note = SherdNoteFactory()
        note2 = SherdNoteFactory()
        project = ProjectFactory()
        r = self.client.post(
            reverse('sequenceasset-list'),
            {
                'course': course.pk,
                'spine': note.pk,
                'project': project.pk,
                'media_elements': [
                    {
                        'media': note2.pk,
                        'start_time': None,
                        'end_time': Decimal('0.9999'),
                    }
                ],
                'text_elements': [
                    {
                        'text': 'My text',
                        'start_time': None,
                        'end_time': Decimal('0.198985'),
                    },
                    {
                        'text': 'My text 2',
                        'start_time': Decimal('11'),
                        'end_time': Decimal('14'),
                    },
                ]
            }, format='json')

        self.assertEqual(
            r.status_code, 400,
            'Attempting to create track elements with no start time should '
            'be invalid.')
Example #9
0
 def setUp(self):
     self.c = CourseFactory()