import os import pytest from importer.downloader import SourceType, Downloader @pytest.fixture def mock_ydl_download(mocker): # this function is responsible for downloading the file return mocker.patch('importer.downloader.youtube_dl.YoutubeDL.process_info') @pytest.mark.parametrize('url,source_type', [ ("https://i.redd.it/pjj1ll1b2rr41.jpg", SourceType.IREDDIT), ("https://gfycat.com/presentdangerousdromedary", SourceType.GFYCAT), ("https://i.imgur.com/fXLMjfp.jpg", SourceType.IMAGURJPG), ("https://redgifs.com/watch/ripesnivelingfiddlercrab", SourceType.REDGIFS), ("https://www.youtube.com/watch?v=oLkdqptmfng", SourceType.YOUTUBE), ("https://v.redd.it/42j6r7i8z7151", SourceType.VREDDIT), ("https://www.reddit.com/gallery/mik7c9", SourceType.GREDDIT), ("https://duckduckgo.com", SourceType.UNKNOWN), ]) def test_source_type(url, source_type): with Downloader(url, "1-A") as d: assert d.source_type == source_type @pytest.mark.parametrize('url,paths', [ ("https://gfycat.com/presentdangerousdromedary", ["source_presentdangerousdromedary.mp4"]), ("https://redgifs.com/watch/ripesnivelingfiddlercrab", ["source_RipeSnivelingFiddlercrab.mp4", 'source_RipeSnivelingFiddlercrab-mobile.mp4']), ("https://www.youtube.com/watch?v=oLkdqptmfng", ["source_oLkdqptmfng.mp4"]), ("https://v.redd.it/42j6r7i8z7151", ["source_42j6r7i8z7151.mp4"]), ]) def test_download_youtube_dl(url, paths, mock_ydl_download): with Downloader(url, "1-A") as d: assert d.downloaded is False d.download() assert d.downloaded is True assert d.paths == paths mock_ydl_download.assert_called() @pytest.mark.parametrize('url,path', [ ("https://i.redd.it/pjj1ll1b2rr41.jpg", "source_pjj1ll1b2rr41.jpg"), ("https://i.imgur.com/fXLMjfp.jpg", "source_fXLMjfp.jpg"), ]) def test_download_raw_data(url, path): with Downloader(url, "1-A") as d: assert d.downloaded is False d.download() assert d.paths == [path] assert d.downloaded is True