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_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_annotation_with_project(self): project = ProjectFactory() self.data['project'] = project.id request = RequestFactory().post('/', self.data) request.user = self.student_one response = create_annotation(request) self.assertEquals(response.status_code, 302) note = SherdNote.objects.get(title='Annotation Test') ProjectNote.objects.get(annotation=note, project=project)
def setUp(self): self.setup_sample_course() self.asset1 = AssetFactory(course=self.sample_course) global_annotation, created = SherdNote.objects.global_annotation( self.asset1, self.student_three, auto_create=True) self.assertTrue(global_annotation.is_global_annotation()) whole_item_annotation = SherdNoteFactory( asset=self.asset1, author=self.student_three, title="Whole Item Selection", range1=0, range2=0) self.assertFalse(whole_item_annotation.is_global_annotation()) real_annotation = SherdNoteFactory( asset=self.asset1, author=self.student_three, title="Selection", range1=116.25, range2=6.75) self.assertFalse(real_annotation.is_global_annotation()) self.assignment1 = ProjectFactory.create( title='Alpha', course=self.sample_course, author=self.instructor_one, policy='CourseProtected', project_type='assignment') self.response1 = ProjectFactory.create( title="Response 1", course=self.sample_course, author=self.student_one, policy='InstructorShared', parent=self.assignment1) self.response2 = ProjectFactory.create( title="Response 2", date_submitted=datetime.now(), course=self.sample_course, author=self.student_two, policy='InstructorShared', parent=self.assignment1) self.assignment2 = ProjectFactory.create( title='Beta', course=self.sample_course, author=self.instructor_one, policy='CourseProtected', project_type='assignment') self.project = ProjectFactory(title='Gamma', course=self.sample_course, author=self.instructor_one, policy='CourseProtected') self.add_citation(self.project, global_annotation) self.add_citation(self.project, whole_item_annotation) self.add_citation(self.project, real_annotation)
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.')