def test_scrape_youtube_thumbnail_logging(
     self,
     image_width,
     image_height,
     is_success,
     mocked_request,
     mock_logger
 ):
     """
     Test that we get correct logs in case of failure as well as success.
     """
     course_id = unicode(self.course.id)
     video1_edx_video_id = 'test-youtube-video-1'
     mocked_request.side_effect = [
         self.mocked_youtube_thumbnail_response(
             image_width=image_width,
             image_height=image_height
         )
     ]
     scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')
     if is_success:
         mock_logger.info.assert_called_with(
             u'VIDEOS: Scraping youtube video thumbnail for edx_video_id [%s] in course [%s]',
             video1_edx_video_id,
             course_id
         )
     else:
         mock_logger.info.assert_called_with(
             u'VIDEOS: Scraping youtube video thumbnail failed for edx_video_id [%s] in course [%s] with error: %s',
             video1_edx_video_id,
             course_id,
             'This image file must be larger than 2 KB.'
         )
    def test_no_video_thumbnail_downloaded(
        self,
        image_content,
        image_content_type,
        error_message,
        mock_download_youtube_thumbnail,
        mock_logger
    ):
        """
        Test that when no thumbnail is downloaded, video image is not updated.
        """
        mock_download_youtube_thumbnail.return_value = image_content, image_content_type
        course_id = unicode(self.course.id)
        video1_edx_video_id = 'test-youtube-video-1'

        # Verify that video1 has no image attached.
        video1_image_url = get_course_video_image_url(course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)

        # Scrape video thumbnail.
        scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')

        mock_logger.info.assert_called_with(
            u'VIDEOS: Scraping youtube video thumbnail failed for edx_video_id [%s] in course [%s] with error: %s',
            video1_edx_video_id,
            course_id,
            error_message
        )

        # Verify that no image is attached to video1.
        video1_image_url = get_course_video_image_url(course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)
    def test_scrape_youtube_thumbnail(self, mocked_request):
        """
        Test that youtube thumbnails are correctly scrapped.
        """
        course_id = unicode(self.course.id)
        video1_edx_video_id = 'test-youtube-video-1'
        video2_edx_video_id = 'test-youtube-video-2'

        # Mock get youtube thumbnail responses.
        mocked_request.side_effect = [self.mocked_youtube_thumbnail_response()]

        # Verify that video1 has no image attached.
        video1_image_url = get_course_video_image_url(course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)

        # Verify that video2 has already image attached.
        video2_image_url = get_course_video_image_url(course_id=course_id, edx_video_id=video2_edx_video_id)
        self.assertIsNotNone(video2_image_url)

        # Scrape video thumbnails.
        scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')
        scrape_youtube_thumbnail(course_id, video2_edx_video_id, 'test-yt-id2')

        # Verify that now video1 image is attached.
        video1_image_url = get_course_video_image_url(course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNotNone(video1_image_url)

        # Also verify that video2's image is not updated.
        video2_image_url_latest = get_course_video_image_url(course_id=course_id, edx_video_id=video2_edx_video_id)
        self.assertEqual(video2_image_url, video2_image_url_latest)
示例#4
0
    def test_no_video_thumbnail_downloaded(self, image_content,
                                           image_content_type, error_message,
                                           mock_download_youtube_thumbnail,
                                           mock_logger):
        """
        Test that when no thumbnail is downloaded, video image is not updated.
        """
        mock_download_youtube_thumbnail.return_value = image_content, image_content_type
        course_id = six.text_type(self.course.id)
        video1_edx_video_id = 'test-youtube-video-1'

        # Verify that video1 has no image attached.
        video1_image_url = get_course_video_image_url(
            course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)

        # Scrape video thumbnail.
        scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')

        mock_logger.info.assert_called_with(
            u'VIDEOS: Scraping youtube video thumbnail failed for edx_video_id [%s] in course [%s] with error: %s',
            video1_edx_video_id, course_id, error_message)

        # Verify that no image is attached to video1.
        video1_image_url = get_course_video_image_url(
            course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)
示例#5
0
    def test_scrape_youtube_thumbnail(self, mocked_request):
        """
        Test that youtube thumbnails are correctly scrapped.
        """
        course_id = six.text_type(self.course.id)
        video1_edx_video_id = 'test-youtube-video-1'
        video2_edx_video_id = 'test-youtube-video-2'

        # Mock get youtube thumbnail responses.
        mocked_request.side_effect = [self.mocked_youtube_thumbnail_response()]

        # Verify that video1 has no image attached.
        video1_image_url = get_course_video_image_url(
            course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNone(video1_image_url)

        # Verify that video2 has already image attached.
        video2_image_url = get_course_video_image_url(
            course_id=course_id, edx_video_id=video2_edx_video_id)
        self.assertIsNotNone(video2_image_url)

        # Scrape video thumbnails.
        scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')
        scrape_youtube_thumbnail(course_id, video2_edx_video_id, 'test-yt-id2')

        # Verify that now video1 image is attached.
        video1_image_url = get_course_video_image_url(
            course_id=course_id, edx_video_id=video1_edx_video_id)
        self.assertIsNotNone(video1_image_url)

        # Also verify that video2's image is not updated.
        video2_image_url_latest = get_course_video_image_url(
            course_id=course_id, edx_video_id=video2_edx_video_id)
        self.assertEqual(video2_image_url, video2_image_url_latest)
示例#6
0
 def test_scrape_youtube_thumbnail_logging(
     self,
     image_width,
     image_height,
     is_success,
     mocked_request,
     mock_logger
 ):
     """
     Test that we get correct logs in case of failure as well as success.
     """
     course_id = unicode(self.course.id)
     video1_edx_video_id = 'test-youtube-video-1'
     mocked_request.side_effect = [
         self.mocked_youtube_thumbnail_response(
             image_width=image_width,
             image_height=image_height
         )
     ]
     scrape_youtube_thumbnail(course_id, video1_edx_video_id, 'test-yt-id')
     if is_success:
         mock_logger.info.assert_called_with(
             'VIDEOS: Scraping youtube video thumbnail for edx_video_id [%s] in course [%s]',
             video1_edx_video_id,
             course_id
         )
     else:
         mock_logger.info.assert_called_with(
             'VIDEOS: Scraping youtube video thumbnail failed for edx_video_id [%s] in course [%s] with error: %s',
             video1_edx_video_id,
             course_id,
             'This image file must be larger than 2 KB.'
         )
示例#7
0
def task_scrape_youtube_thumbnail(self, course_videos, run):  # pylint: disable=unused-argument
    """
    Task to scrape youtube thumbnails and update them in edxval for the given course-videos.

    Arguments:
        course_videos: A list of tuples, each containing course ID, video ID and youtube ID.
        run: This tracks the YT thumbnail scraping job runs.
    """
    for course_id, edx_video_id, youtube_id in course_videos:
        try:
            scrape_youtube_thumbnail(course_id, edx_video_id, youtube_id)
        except Exception:  # pylint: disable=broad-except
            LOGGER.exception((
                u"[video thumbnails] [run=%s] [video-thumbnails-scraping-failed-with-unknown-exc] "
                u"[edx_video_id=%s] [youtube_id=%s] [course=%s]"), run,
                             edx_video_id, youtube_id, course_id)
            continue
示例#8
0
def task_scrape_youtube_thumbnail(self, course_videos, run):   # pylint: disable=unused-argument
    """
    Task to scrape youtube thumbnails and update them in edxval for the given course-videos.

    Arguments:
        course_videos: A list of tuples, each containing course ID, video ID and youtube ID.
        run: This tracks the YT thumbnail scraping job runs.
    """
    for course_id, edx_video_id, youtube_id in course_videos:
        try:
            scrape_youtube_thumbnail(course_id, edx_video_id, youtube_id)
        except Exception:  # pylint: disable=broad-except
            LOGGER.exception(
                (u"[video thumbnails] [run=%s] [video-thumbnails-scraping-failed-with-unknown-exc] "
                 u"[edx_video_id=%s] [youtube_id=%s] [course=%s]"),
                run,
                edx_video_id,
                youtube_id,
                course_id
            )
            continue