def test_list(self): ProjectSequenceAssetFactory() ProjectSequenceAssetFactory() r = self.client.get(reverse('projectsequenceasset-list')) self.assertEqual(r.status_code, 200) self.assertEqual(len(r.data), 0)
class ProjectSequenceAssetTest(TestCase): def setUp(self): self.psa = ProjectSequenceAssetFactory() def test_is_valid_from_factory(self): self.psa.full_clean() def test_prevent_duplicate(self): with self.assertRaises(IntegrityError): ProjectSequenceAssetFactory(sequence_asset=self.psa.sequence_asset, project=self.psa.project)
class ProjectSequenceAssetTest(TestCase): def setUp(self): self.psa = ProjectSequenceAssetFactory() def test_is_valid_from_factory(self): self.psa.full_clean() def test_prevent_duplicate(self): with self.assertRaises(IntegrityError): ProjectSequenceAssetFactory( sequence_asset=self.psa.sequence_asset, project=self.psa.project)
def test_update_someone_elses_sequence_asset(self): someone_else = UserFactory() sa = SequenceAssetFactory(author=someone_else) psa = ProjectSequenceAssetFactory(sequence_asset=sa) note = SherdNoteFactory() r = self.client.put( reverse('sequenceasset-detail', args=(sa.pk,)), { 'course': sa.course.pk, 'project': psa.project.pk, 'spine': note.pk, 'spine_volume': 100, 'media_elements': [], 'text_elements': [ { 'text': 'My text', 'start_time': Decimal('0'), 'end_time': Decimal('10'), } ], }, format='json') self.assertEqual(r.status_code, 403) sa.refresh_from_db() self.assertEqual(sa.course, sa.course) self.assertEqual(sa.author, someone_else) self.assertEqual(sa.spine, None) self.assertEqual(sa.spine_volume, 80) self.assertEqual(SequenceAsset.objects.count(), 1) self.assertEqual(ProjectSequenceAsset.objects.count(), 1) self.assertEqual(SequenceTextElement.objects.count(), 0)
def test_sequence(self): sa = SequenceAssetFactory(spine=self.note) ProjectSequenceAssetFactory(project=self.project, sequence_asset=sa) SequenceMediaElementFactory(sequence_asset=sa, media=self.note2) self.update_references() indicies = DiscussionIndex.objects.all() self.assertEquals(indicies.count(), 2) index = indicies[0] self.assertIsNone(index.participant) self.assertIsNone(index.comment) self.assertEquals(index.collaboration, self.collaboration) self.assertEquals(index.asset, self.asset) self.assertEquals(index.get_type_label(), 'project') self.assertEquals(index.content_object, self.asset) self.assertEquals(index.clump_parent(), self.project) self.assertIsNone(index.get_parent_url()) self.assertEquals(index.body, '') index = indicies[1] self.assertIsNone(index.participant) self.assertIsNone(index.comment) self.assertEquals(index.collaboration, self.collaboration) self.assertEquals(index.asset, self.asset2) self.assertEquals(index.get_type_label(), 'project') self.assertEquals(index.content_object, self.asset2) self.assertEquals(index.clump_parent(), self.project) self.assertIsNone(index.get_parent_url()) self.assertEquals(index.body, '')
def test_list_by_project(self): psa = ProjectSequenceAssetFactory() url = '{}?project={}'.format(reverse('projectsequenceasset-list'), psa.project.id) # anonymous user r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(len(r.data), 0) # project's author self.client.login(username=psa.project.author.username, password='******') r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(len(r.data), 1)
def test_update(self): sa = SequenceAssetFactory(author=self.u) psa = ProjectSequenceAssetFactory(sequence_asset=sa) note = SherdNoteFactory() r = self.client.put( reverse('sequenceasset-detail', args=(sa.pk,)), { 'course': sa.course.pk, 'project': psa.project.pk, 'spine': note.pk, 'media_elements': [], 'text_elements': [], }, format='json') self.assertEqual(r.status_code, 200) sa.refresh_from_db() self.assertEqual(sa.course, sa.course) self.assertEqual(sa.author, self.u) self.assertEqual(sa.spine, note) self.assertEqual(SequenceAsset.objects.count(), 1) self.assertEqual(ProjectSequenceAsset.objects.count(), 1)
def test_sequence_assignment_response_delete(self): sequence_assignment = ProjectFactory.create( course=self.sample_course, author=self.instructor_one, policy=PUBLISH_WHOLE_CLASS[0], project_type=PROJECT_TYPE_SEQUENCE_ASSIGNMENT) response1 = ProjectFactory.create(title='Zeta', course=self.sample_course, author=self.student_one, parent=sequence_assignment) self.assertEquals(response1.assignment(), sequence_assignment) psa = ProjectSequenceAssetFactory(project=response1) url = reverse('project-delete', args=[response1.id]) self.client.login(username=self.student_one.username, password='******') response = self.client.post(url, {}) self.assertEquals(response.status_code, 302) with self.assertRaises(Project.DoesNotExist): Project.objects.get(id=response1.id) with self.assertRaises(ProjectSequenceAsset.DoesNotExist): ProjectSequenceAsset.objects.get(id=psa.id)
def test_in_sequence_assignment_response(self): res = SherdNoteResource() self.assertFalse(res.in_sequence_assignment_response(self.note1)) self.assertFalse(res.in_sequence_assignment_response(self.note2)) sa = SequenceAssetFactory(spine=self.note1) psa = ProjectSequenceAssetFactory(sequence_asset=sa) self.assertFalse(res.in_sequence_assignment_response(self.note1)) psa.project.date_submitted = datetime.today() psa.project.save() self.assertTrue(res.in_sequence_assignment_response(self.note1)) SequenceMediaElementFactory(sequence_asset=sa, media=self.note2) self.assertTrue(res.in_sequence_assignment_response(self.note2)) request = RequestFactory().get('/?citable=true') request.user = self.student_one request.course = self.sample_course bundle = SherdNoteResource().build_bundle(obj=self.note1, request=request) res.dehydrate(bundle) self.assertEquals(bundle.data['editable'], False) self.assertEquals(bundle.data['citable'], True)
def setUp(self): self.psa = ProjectSequenceAssetFactory()
def test_prevent_duplicate(self): with self.assertRaises(IntegrityError): ProjectSequenceAssetFactory(sequence_asset=self.psa.sequence_asset, project=self.psa.project)
def test_update_with_track_elements(self): sa = SequenceAssetFactory(author=self.u) psa = ProjectSequenceAssetFactory(sequence_asset=sa) note = SherdNoteFactory() element_note = SherdNoteFactory() r = self.client.put( reverse('sequenceasset-detail', args=(sa.pk,)), { 'course': sa.course.pk, 'project': psa.project.pk, 'spine': note.pk, 'spine_volume': 0, 'media_elements': [ { 'media': element_note.pk, 'start_time': Decimal('0'), 'end_time': Decimal('10'), 'volume': 0, } ], 'text_elements': [ { 'text': 'My text', 'start_time': Decimal('0'), 'end_time': Decimal('10'), } ] }, format='json') self.assertEqual(r.status_code, 200) sa.refresh_from_db() self.assertEqual(sa.course, sa.course) self.assertEqual(sa.author, self.u) self.assertEqual(sa.spine, note) self.assertEqual(sa.spine_volume, 0) self.assertEqual(SequenceMediaElement.objects.count(), 1) element = SequenceMediaElement.objects.first() self.assertEqual(element.volume, 0) self.assertEqual(SequenceTextElement.objects.count(), 1) r = self.client.put( reverse('sequenceasset-detail', args=(sa.pk,)), { 'course': sa.course.pk, 'spine': note.pk, 'spine_volume': 65, 'media_elements': [ { 'media': element_note.pk, 'start_time': Decimal('0'), 'end_time': Decimal('10'), 'volume': 30, } ], 'text_elements': [ { 'text': 'My text', 'start_time': Decimal('0'), 'end_time': Decimal('10'), }, { 'text': 'My text', 'start_time': Decimal('10'), 'end_time': Decimal('12'), } ] }, format='json') self.assertEqual(r.status_code, 200) sa.refresh_from_db() self.assertEqual(sa.course, sa.course) self.assertEqual(sa.author, self.u) self.assertEqual(sa.spine, note) self.assertEqual(sa.spine_volume, 65) self.assertEqual(SequenceMediaElement.objects.count(), 1) element = SequenceMediaElement.objects.first() self.assertEqual(element.volume, 30) self.assertEqual(SequenceTextElement.objects.count(), 2)