Example #1
0
 def test_team(self):
     team = TeamFactory(slug='team', admin=self.user)
     video1 = VideoFactory(video_id='video1',
                           primary_audio_language_code='fr',
                           team=team)
     video2 = VideoFactory(video_id='video2', team=team)
     other_video = VideoFactory()
     v1 = pipeline.add_subtitles(video1,
                                 'en',
                                 SubtitleSetFactory(),
                                 author=self.user)
     self.clear_records()
     record1 = ActivityRecord.objects.create_for_video_added(video1)
     record2 = ActivityRecord.objects.create_for_video_added(video2)
     record3 = ActivityRecord.objects.create_for_subtitle_version(v1)
     # this record should never be listed in the endpoint
     ActivityRecord.objects.create_for_video_added(other_video)
     url = reverse('api:team-activity', args=(team.slug, ))
     self.check_list(url, record3, record2, record1)
     self.check_list(url + '?video=video1', record3, record1)
     self.check_list(url + '?user=test-user', record3)
     self.check_list(url + '?user=id${}'.format(self.user.secure_id()),
                     record3)
     self.check_list(url + '?video_language=fr', record3, record1)
     self.check_list(url + '?type=video-added', record2, record1)
     self.check_list(url + '?language=en', record3)
     self.check_list(
         url + '?before=' + format_datetime_field(record2.created), record1)
     self.check_list(
         url + '?after=' + format_datetime_field(record2.created), record3,
         record2)
Example #2
0
    def test_video(self):
        video = VideoFactory(user=self.user)
        other_video = VideoFactory()
        v1 = pipeline.add_subtitles(video, 'en', SubtitleSetFactory())
        v2 = pipeline.add_subtitles(video,
                                    'fr',
                                    SubtitleSetFactory(),
                                    author=self.user)
        self.clear_records()
        record1 = ActivityRecord.objects.create_for_video_added(video)
        record2 = ActivityRecord.objects.create_for_subtitle_version(v1)
        record3 = ActivityRecord.objects.create_for_subtitle_version(v2)
        # this record should never be listed in the endpoint
        ActivityRecord.objects.create_for_video_added(other_video)
        url = reverse('api:video-activity', args=(video.video_id, ))

        self.check_list(url, record3, record2, record1)
        self.check_list(url + '?type=video-added', record1)
        self.check_list(url + '?user=test-user', record3, record1)
        self.check_list(url + '?language=en', record2)
        self.check_list(
            url + '?before=' + format_datetime_field(record2.created), record1)
        self.check_list(
            url + '?after=' + format_datetime_field(record2.created), record3,
            record2)
        self.check_list(url + '?user=test-user&language=fr', record3)
Example #3
0
 def check_application_data(self, data, application):
     assert_equal(data['user'], application.user.username)
     assert_equal(data['note'], application.note)
     assert_equal(data['status'], application.get_status_display())
     assert_equal(data['id'], application.id)
     assert_equal(data['created'],
                  format_datetime_field(application.created))
     if application.modified:
         assert_equal(data['modified'],
                      format_datetime_field(application.modified))
     else:
         assert_equal(data['modified'], None)
     assert_equal(data['resource_uri'], self.detail_url(application))
Example #4
0
 def check_project_data(self, data, project):
     assert_equal(data['name'], project.name)
     assert_equal(data['slug'], project.slug)
     assert_equal(data['description'], project.description)
     assert_equal(data['guidelines'], project.guidelines)
     assert_equal(data['created'], format_datetime_field(project.created))
     assert_equal(data['modified'],
                  format_datetime_field(project.modified))
     assert_equal(data['workflow_enabled'], project.workflow_enabled)
     assert_equal(data['resource_uri'],
                  reverse('api:projects-detail', kwargs={
                      'team_slug': self.team.slug,
                      'slug': project.slug,
                  }, request=APIRequestFactory().get('/')))
Example #5
0
 def check_data(self, activity_data, record):
     assert_equal(activity_data['type'], record.type)
     assert_equal(activity_data['date'],
                  format_datetime_field(record.created))
     if record.video:
         assert_equal(activity_data['video'], record.video.video_id)
         assert_equal(
             activity_data['video_uri'],
             reverse('api:video-detail',
                     kwargs={
                         'video_id': record.video.video_id,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['video'], None)
         assert_equal(activity_data['video_uri'], None)
     if record.language_code:
         assert_equal(activity_data['language'], record.language_code)
         assert_equal(
             activity_data['language_uri'],
             reverse('api:subtitle-language-detail',
                     kwargs={
                         'video_id': record.video.video_id,
                         'language_code': record.language_code,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['language'], None)
         assert_equal(activity_data['language_uri'], None)
     assert_equal(activity_data['user'], user_field_data(record.user))
Example #6
0
 def test_fields(self):
     serializer_data = self.get_serializer_data()
     assert_equal(serializer_data['id'], self.language.id)
     assert_equal(serializer_data['created'],
                  format_datetime_field(self.language.created))
     assert_equal(serializer_data['is_original'], True)
     assert_equal(serializer_data['is_primary_audio_language'], True)
     assert_equal(serializer_data['is_rtl'], self.language.is_rtl())
     assert_equal(serializer_data['published'],
                  self.language.has_public_version())
     assert_equal(serializer_data['language_code'],
                  self.language.language_code)
     assert_equal(serializer_data['name'],
                  self.language.get_language_code_display())
     assert_equal(serializer_data['title'], self.language.get_title())
     assert_equal(serializer_data['description'],
                  self.language.get_description())
     assert_equal(serializer_data['metadata'], self.language.get_metadata())
     assert_equal(serializer_data['subtitle_count'],
                  self.language.get_subtitle_count())
     assert_equal(serializer_data['subtitles_complete'],
                  self.language.subtitles_complete)
     assert_equal(serializer_data['is_translation'],
                  compat.subtitlelanguage_is_translation(self.language))
     assert_equal(
         serializer_data['original_language_code'],
         compat.subtitlelanguage_original_language_code(self.language))
     assert_equal(
         serializer_data['resource_uri'],
         reverse('api:subtitle-language-detail',
                 kwargs={
                     'video_id': self.video.video_id,
                     'language_code': self.language.language_code,
                 },
                 request=APIRequestFactory().get("/")))
Example #7
0
 def correct_data(self, video_url):
     return {
         'created': format_datetime_field(video_url.created),
         'url': video_url.url,
         'primary': video_url.primary,
         'original': video_url.original,
         'id': video_url.id,
         'resource_uri': self.detail_url(video_url),
     }
Example #8
0
    def test_video(self):
        video = VideoFactory(user=self.user)
        other_video = VideoFactory()
        v1 = pipeline.add_subtitles(video, 'en', SubtitleSetFactory())
        v2 = pipeline.add_subtitles(video,
                                    'fr',
                                    SubtitleSetFactory(),
                                    author=self.user)
        self.clear_records()
        record1 = ActivityRecord.objects.create_for_video_added(video)
        record2 = ActivityRecord.objects.create_for_subtitle_version(v1)
        record3 = ActivityRecord.objects.create_for_subtitle_version(v2)
        # this record should never be listed in the endpoint
        ActivityRecord.objects.create_for_video_added(other_video)
        url = reverse('api:video-activity', args=(video.video_id, ))

        self.check_list(url, record3, record2, record1)
        self.check_list(url + '?type=video-added', record1)
        self.check_list(url + '?user=test-user', record3, record1)
        self.check_list(url + '?language=en', record2)
        # We should accept filtering with or without time zone, date or datetime
        self.check_list(
            url + '?before=' + format_datetime_field(record2.created), record1)
        self.check_list(url + '?before=' + record2.created.isoformat(),
                        record1)
        self.check_list(
            url + '?after=' + format_datetime_field(record2.created), record3,
            record2)
        self.check_list(url + '?after=' + record2.created.isoformat(), record3,
                        record2)
        self.check_list(url + '?before=' +
                        format_datetime_field_as_date(record2.created))
        self.check_list(
            url + '?after=' + format_datetime_field_as_date(record3.created),
            record3, record2, record1)
        tomorrow = record1.created + timedelta(days=1)
        self.check_list(
            url + '?before=' + format_datetime_field_as_date(tomorrow),
            record3, record2, record1)
        yesterday = record1.created - timedelta(days=1)
        self.check_list(
            url + '?after=' + format_datetime_field_as_date(yesterday),
            record3, record2, record1)
        self.check_list(url + '?user=test-user&language=fr', record3)
Example #9
0
 def test_simple_fields(self):
     data = self.get_serialized_data()
     assert_equal(data['id'], self.video.video_id)
     assert_equal(data['title'], self.video.title)
     assert_equal(data['description'], self.video.description)
     assert_equal(data['duration'], self.video.duration)
     assert_equal(data['created'],
                  format_datetime_field(self.video.created))
     assert_equal(data['thumbnail'], self.thumbnail_url)
     assert_equal(
         data['resource_uri'],
         'http://testserver/api/videos/{0}/'.format(self.video.video_id))
Example #10
0
 def check_activity_data(self, activity_data, record):
     assert_equal(activity_data['id'], record.id)
     assert_equal(activity_data['type'], record.type_code)
     assert_equal(activity_data['type_name'], record.type)
     assert_equal(activity_data['created'],
                  format_datetime_field(record.created))
     if record.type == 'video-url-edited':
         assert_equal(activity_data['new_video_title'],
                      record.get_related_obj().new_title)
     else:
         assert_equal(activity_data['new_video_title'], None)
     if record.type == 'comment-added':
         assert_equal(activity_data['comment'],
                      record.get_related_obj().content)
     else:
         assert_equal(activity_data['comment'], None)
     assert_equal(
         activity_data['resource_uri'],
         reverse('api:activity-detail',
                 kwargs={'id': record.id},
                 request=APIRequestFactory().get('/')))
     if record.video:
         assert_equal(activity_data['video'], record.video.video_id)
         assert_equal(
             activity_data['video_uri'],
             reverse('api:video-detail',
                     kwargs={
                         'video_id': record.video.video_id,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['video'], None)
         assert_equal(activity_data['video_uri'], None)
     if record.language_code:
         assert_equal(activity_data['language'], record.language_code)
         assert_equal(
             activity_data['language_url'],
             reverse('api:subtitle-language-detail',
                     kwargs={
                         'video_id': record.video.video_id,
                         'language_code': record.language_code,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['language'], None)
         assert_equal(activity_data['language_url'], None)
     if record.user:
         assert_equal(activity_data['user'], record.user.username)
     else:
         assert_equal(activity_data['user'], None)
Example #11
0
 def check_activity_data(self, activity_data, activity):
     assert_equal(activity_data['type'], activity.action_type)
     assert_equal(activity_data['created'],
                  format_datetime_field(activity.created))
     assert_equal(activity_data['new_video_title'],
                  activity.new_video_title)
     assert_equal(activity_data['id'], activity.id)
     if activity.comment:
         assert_equal(activity_data['comment'], activity.comment.content)
     else:
         assert_equal(activity_data['comment'], None)
     assert_equal(
         activity_data['resource_uri'],
         reverse('api:activity-detail',
                 kwargs={'id': activity.id},
                 request=APIRequestFactory().get('/')))
     if activity.video:
         assert_equal(activity_data['video'], activity.video.video_id)
         assert_equal(
             activity_data['video_uri'],
             reverse('api:video-detail',
                     kwargs={
                         'video_id': activity.video.video_id,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['video'], None)
         assert_equal(activity_data['video_uri'], None)
     if activity.new_language:
         assert_equal(activity_data['language'],
                      activity.new_language.language_code)
         assert_equal(
             activity_data['language_url'],
             reverse('api:subtitle-language-detail',
                     kwargs={
                         'video_id': activity.new_language.video.video_id,
                         'language_code':
                         activity.new_language.language_code,
                     },
                     request=APIRequestFactory().get('/')))
     else:
         assert_equal(activity_data['language'], None)
         assert_equal(activity_data['language_url'], None)
     if activity.user:
         assert_equal(activity_data['user'], activity.user.username)
     else:
         assert_equal(activity_data['user'], None)
Example #12
0
 def test_list(self):
     note = SubtitleNote.objects.create(user=self.user,
                                        video=self.video,
                                        language_code='en',
                                        body='test note')
     # also create a note from another language.  This one shouldn't be
     # included in the reply
     SubtitleNote.objects.create(user=self.user,
                                 video=self.video,
                                 language_code='fr',
                                 body='wrong test note')
     response = self.client.get(self.api_path)
     assert_equal(response.status_code, 200)
     data = json.loads(response.content)
     assert_equal(data, [{
         'user': self.user.username,
         'body': 'test note',
         'created': format_datetime_field(note.created),
     }])
Example #13
0
 def check_task_data(self, data, task):
     assert_equal(data['video_id'], task.team_video.video.video_id)
     assert_equal(data['language'], task.language)
     assert_equal(data['id'], task.id)
     assert_equal(data['type'], task.get_type_display())
     if task.assignee:
         assert_equal(data['assignee'], task.assignee.username)
     else:
         assert_equal(data['assignee'], None)
     assert_equal(data['priority'], task.priority)
     if task.completed:
         assert_equal(data['completed'],
                      format_datetime_field(task.completed))
     else:
         assert_equal(data['completed'], None)
     assert_equal(data['approved'], task.get_approved_display())
     assert_equal(data['resource_uri'],
                  reverse('api:tasks-detail', kwargs={
                      'team_slug': self.team.slug,
                      'id': task.id,
                  }, request=APIRequestFactory().get('/')))