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()
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.')
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)
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)
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'))
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)
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)
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.')
def setUp(self): self.c = CourseFactory()