コード例 #1
0
    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)
コード例 #2
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)
コード例 #3
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)
コード例 #4
0
    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)
コード例 #5
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, '')
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
    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)
コード例 #9
0
ファイル: test_api.py プロジェクト: tmnogueira/mediathread
    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)
コード例 #10
0
 def setUp(self):
     self.psa = ProjectSequenceAssetFactory()
コード例 #11
0
 def test_prevent_duplicate(self):
     with self.assertRaises(IntegrityError):
         ProjectSequenceAssetFactory(sequence_asset=self.psa.sequence_asset,
                                     project=self.psa.project)
コード例 #12
0
 def setUp(self):
     self.psa = ProjectSequenceAssetFactory()
コード例 #13
0
    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)