def test_call_to_youtube_api_short_playlist(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.return_value = self.short_playlist_response importer = BulkTaskYoutubeImport(**self.form_data) playlist = importer._fetch_all_youtube_videos('fakeId') assert playlist == self.short_playlist_response, playlist
def test_extract_video_info_one_item(self, build): importer = BulkTaskYoutubeImport(**self.form_data) info = importer._extract_video_info( self.short_playlist_response['items'][0]) assert info['info'][ 'video_url'] == 'https://www.youtube.com/watch?v=youtubeid2'
def test_call_to_youtube_api_endpoint(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.return_value = self.short_playlist_response importer = BulkTaskYoutubeImport(**self.form_data) importer._fetch_all_youtube_videos('fakeId') build.assert_called_with('youtube', 'v3', developerKey=self.form_data['youtube_api_server_key'])
def test_all_coverage_tasks_extraction(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.return_value = self.short_playlist_response importer = BulkTaskYoutubeImport(**self.form_data) tasks = importer.tasks() assert tasks == [{u'info': {u'oembed': '<iframe width="512" height="512" src="https://www.youtube.com/embed/youtubeid2" frameborder="0" allowfullscreen></iframe>', 'video_url': u'https://www.youtube.com/watch?v=youtubeid2'}}]
def test_non_youtube_url_raises_exception(self, build): importer = BulkTaskYoutubeImport(**self.form_data) id = importer._get_playlist_id('https://www.youtu.be/playlist?list=goodplaylist') assert id == 'goodplaylist' id = importer._get_playlist_id('https://youtu.be/playlist?list=goodplaylist') assert id == 'goodplaylist' assert_raises(BulkImportException, importer._get_playlist_id, 'https://youtubee.com/playlist?list=goodplaylist') assert_raises(BulkImportException, importer._get_playlist_id, 'https://api.youtube.com/playlist?list=goodplaylist') assert_raises(BulkImportException, importer._get_playlist_id, 'https://otherdomain.com/playlist?list=goodplaylist')
def test_call_to_youtube_api_long_playlist(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.side_effect = [self.long_playlist_response, self.long_playlist_response, self.short_playlist_response] importer = BulkTaskYoutubeImport(**self.form_data) expected_playlist = {'items': ''} expected_playlist['items'] = self.long_playlist_response['items'] + self.long_playlist_response['items'] + self.short_playlist_response['items'] playlist = importer._fetch_all_youtube_videos('fakeId') assert playlist == expected_playlist, playlist
def test_parse_playlist_id(self, build): importer = BulkTaskYoutubeImport(**self.form_data) id = importer._get_playlist_id('https://www.youtube.com/playlist?list=goodplaylist') assert id == 'goodplaylist' id = importer._get_playlist_id('https://www.youtube.com/watch?v=youtubeid&list=anotherplaylist&option=2') assert id == 'anotherplaylist' # no playlist assert_raises(BulkImportException, importer._get_playlist_id, 'https://www.youtube.com/watch?v=youtubeid') # malformed url assert_raises(BulkImportException, importer._get_playlist_id, 'www.youtube.com/watch?v=youtubeid&list=anotherplaylist&option=2')
def test_call_to_youtube_api_endpoint(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.return_value = self.short_playlist_response importer = BulkTaskYoutubeImport(**self.form_data) importer._fetch_all_youtube_videos('fakeId') build.assert_called_with( 'youtube', 'v3', developerKey=self.form_data['youtube_api_server_key'])
def test_call_to_youtube_api_long_playlist(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.side_effect = [self.long_playlist_response, self.long_playlist_response, self.short_playlist_response] importer = BulkTaskYoutubeImport(**self.form_data) expected_playlist = {'items': ''} expected_playlist['items'] = self.long_playlist_response[ 'items'] + self.long_playlist_response[ 'items'] + self.short_playlist_response['items'] playlist = importer._fetch_all_youtube_videos('fakeId') assert playlist == expected_playlist, playlist
def test_all_coverage_tasks_extraction(self, build): build.return_value.playlistItems.return_value.list.\ return_value.execute.return_value = self.short_playlist_response importer = BulkTaskYoutubeImport(**self.form_data) tasks = importer.tasks() assert tasks == [{ u'info': { u'oembed': '<iframe width="512" height="512" src="https://www.youtube.com/embed/youtubeid2" frameborder="0" allowfullscreen></iframe>', 'video_url': u'https://www.youtube.com/watch?v=youtubeid2' } }]
def test_non_youtube_url_raises_exception(self, build): importer = BulkTaskYoutubeImport(**self.form_data) id = importer._get_playlist_id( 'https://www.youtu.be/playlist?list=goodplaylist') assert id == 'goodplaylist' id = importer._get_playlist_id( 'https://youtu.be/playlist?list=goodplaylist') assert id == 'goodplaylist' assert_raises(BulkImportException, importer._get_playlist_id, 'https://youtubee.com/playlist?list=goodplaylist') assert_raises(BulkImportException, importer._get_playlist_id, 'https://api.youtube.com/playlist?list=goodplaylist') assert_raises(BulkImportException, importer._get_playlist_id, 'https://otherdomain.com/playlist?list=goodplaylist')
def test_parse_playlist_id(self, build): importer = BulkTaskYoutubeImport(**self.form_data) id = importer._get_playlist_id( 'https://www.youtube.com/playlist?list=goodplaylist') assert id == 'goodplaylist' id = importer._get_playlist_id( 'https://www.youtube.com/watch?v=youtubeid&list=anotherplaylist&option=2' ) assert id == 'anotherplaylist' # no playlist assert_raises(BulkImportException, importer._get_playlist_id, 'https://www.youtube.com/watch?v=youtubeid') # malformed url assert_raises( BulkImportException, importer._get_playlist_id, 'www.youtube.com/watch?v=youtubeid&list=anotherplaylist&option=2')
def test_extract_video_info_one_item(self, build): importer = BulkTaskYoutubeImport(**self.form_data) info = importer._extract_video_info(self.short_playlist_response['items'][0]) assert info['info']['video_url'] == 'https://www.youtube.com/watch?v=youtubeid2'
def test_tasks_return_emtpy_list_if_no_video_to_import(self, build): form_data = {'playlist_url': '', 'youtube_api_server_key': 'apikey'} number_of_tasks = BulkTaskYoutubeImport(**form_data).count_tasks() assert number_of_tasks == 0, number_of_tasks