diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/helper.py | 18 | ||||
-rw-r--r-- | test/test_download.py | 19 | ||||
-rw-r--r-- | test/test_playlists.py | 30 |
3 files changed, 46 insertions, 21 deletions
diff --git a/test/helper.py b/test/helper.py index 9e255878f..8739f816c 100644 --- a/test/helper.py +++ b/test/helper.py @@ -110,3 +110,21 @@ def expect_info_dict(self, expected_dict, got_dict): self.assertEqual(expected, got, u'invalid value for field %s, expected %r, got %r' % (info_field, expected, got)) + # Check for the presence of mandatory fields + for key in ('id', 'url', 'title', 'ext'): + self.assertTrue(got_dict.get(key), 'Missing mandatory field %s' % key) + # Check for mandatory fields that are automatically set by YoutubeDL + for key in ['webpage_url', 'extractor', 'extractor_key']: + self.assertTrue(got_dict.get(key), u'Missing field: %s' % key) + + # Are checkable fields missing from the test case definition? + test_info_dict = dict((key, value if not isinstance(value, compat_str) or len(value) < 250 else 'md5:' + md5(value)) + for key, value in got_dict.items() + if value and key in ('title', 'description', 'uploader', 'upload_date', 'timestamp', 'uploader_id', 'location')) + missing_keys = set(test_info_dict.keys()) - set(expected_dict.keys()) + if missing_keys: + sys.stderr.write(u'\n"info_dict": ' + json.dumps(test_info_dict, ensure_ascii=False, indent=4) + u'\n') + self.assertFalse( + missing_keys, + 'Missing keys in test definition: %s' % ( + ', '.join(sorted(missing_keys)))) diff --git a/test/test_download.py b/test/test_download.py index f4e5d120e..f171c10ba 100644 --- a/test/test_download.py +++ b/test/test_download.py @@ -137,25 +137,6 @@ def generator(test_case): info_dict = json.load(infof) expect_info_dict(self, tc.get('info_dict', {}), info_dict) - - # Check for the presence of mandatory fields - for key in ('id', 'url', 'title', 'ext'): - self.assertTrue(key in info_dict.keys() and info_dict[key]) - # Check for mandatory fields that are automatically set by YoutubeDL - for key in ['webpage_url', 'extractor', 'extractor_key']: - self.assertTrue(info_dict.get(key), u'Missing field: %s' % key) - - # Are checkable fields missing from the test case definition? - test_info_dict = dict((key, value if not isinstance(value, compat_str) or len(value) < 250 else 'md5:' + md5(value)) - for key, value in info_dict.items() - if value and key in ('title', 'description', 'uploader', 'upload_date', 'timestamp', 'uploader_id', 'location')) - missing_keys = set(test_info_dict.keys()) - set(tc.get('info_dict', {}).keys()) - if missing_keys: - sys.stderr.write(u'\n"info_dict": ' + json.dumps(test_info_dict, ensure_ascii=False, indent=4) + u'\n') - self.assertFalse( - missing_keys, - 'Missing keys in test definition: %s' % ( - ','.join(sorted(missing_keys)))) finally: try_rm_tcs_files() diff --git a/test/test_playlists.py b/test/test_playlists.py index 2b1a7e849..b1e38e7e9 100644 --- a/test/test_playlists.py +++ b/test/test_playlists.py @@ -9,8 +9,10 @@ import sys import unittest sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from test.helper import FakeYDL - +from test.helper import ( + expect_info_dict, + FakeYDL, +) from youtube_dl.extractor import ( AcademicEarthCourseIE, @@ -39,6 +41,7 @@ from youtube_dl.extractor import ( TEDIE, ToypicsUserIE, XTubeUserIE, + InstagramUserIE, ) @@ -287,5 +290,28 @@ class TestPlaylists(unittest.TestCase): self.assertEqual(result['id'], 'greenshowers') self.assertTrue(len(result['entries']) >= 155) + def test_InstagramUser(self): + dl = FakeYDL() + ie = InstagramUserIE(dl) + result = ie.extract('http://instagram.com/porsche') + self.assertIsPlaylist(result) + self.assertEqual(result['id'], 'porsche') + self.assertTrue(len(result['entries']) >= 2) + test_video = next( + e for e in result['entries'] + if e['id'] == '614605558512799803_462752227') + dl.add_default_extra_info(test_video, ie, '(irrelevant URL)') + dl.process_video_result(test_video, download=False) + EXPECTED = { + 'id': '614605558512799803_462752227', + 'ext': 'mp4', + 'title': '#Porsche Intelligent Performance.', + 'thumbnail': 're:^https?://.*\.jpg', + 'uploader': 'Porsche', + 'uploader_id': 'porsche', + } + expect_info_dict(self, EXPECTED, test_video) + + if __name__ == '__main__': unittest.main() |