2021-02-11 12:09:37 +13:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# coding=utf-8
|
|
|
|
|
2021-03-01 12:51:44 +13:00
|
|
|
import praw
|
2021-02-11 12:09:37 +13:00
|
|
|
import pytest
|
|
|
|
|
2021-03-05 16:32:24 +13:00
|
|
|
from bulkredditdownloader.exceptions import NotADownloadableLinkError
|
2021-02-11 12:09:37 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.base_downloader import BaseDownloader
|
2021-03-01 12:51:44 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.direct import Direct
|
2021-02-11 12:09:37 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.download_factory import DownloadFactory
|
|
|
|
from bulkredditdownloader.site_downloaders.erome import Erome
|
2021-03-01 12:51:44 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.gallery import Gallery
|
2021-02-11 12:09:37 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.gfycat import Gfycat
|
2021-03-01 12:51:44 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.gif_delivery_network import GifDeliveryNetwork
|
2021-02-11 12:09:37 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.imgur import Imgur
|
|
|
|
from bulkredditdownloader.site_downloaders.redgifs import Redgifs
|
2021-03-01 12:51:44 +13:00
|
|
|
from bulkredditdownloader.site_downloaders.self_post import SelfPost
|
|
|
|
from bulkredditdownloader.site_downloaders.vreddit import VReddit
|
|
|
|
from bulkredditdownloader.site_downloaders.youtube import Youtube
|
2021-02-11 12:09:37 +13:00
|
|
|
|
|
|
|
|
2021-03-01 12:51:44 +13:00
|
|
|
@pytest.mark.online
|
|
|
|
@pytest.mark.reddit
|
|
|
|
@pytest.mark.parametrize(('test_submission_id', 'expected_class'), (
|
|
|
|
('lu8l8g', VReddit),
|
|
|
|
('lu29zn', SelfPost),
|
|
|
|
('lu2ykk', Direct), # Imgur direct link
|
|
|
|
('luh2pd', Direct), # Reddit direct link
|
2021-03-28 09:50:23 +13:00
|
|
|
('luo9eo', Imgur), # Imgur .gifv link
|
2021-03-01 17:05:20 +13:00
|
|
|
('lumulo', Direct), # Imgur direct link gif
|
|
|
|
('lui5t3', Imgur),
|
2021-03-01 12:51:44 +13:00
|
|
|
('lu93m7', Gallery),
|
|
|
|
('luf1nu', Gfycat),
|
2021-03-01 17:05:20 +13:00
|
|
|
('luxmgx', Erome),
|
|
|
|
('lupb4r', Youtube),
|
|
|
|
('lul6l7', Redgifs),
|
|
|
|
('luu376', GifDeliveryNetwork),
|
2021-03-12 16:29:12 +13:00
|
|
|
('m2l5oo', Youtube),
|
2021-03-01 12:51:44 +13:00
|
|
|
))
|
|
|
|
def test_factory_lever_good(test_submission_id: str, expected_class: BaseDownloader, reddit_instance: praw.Reddit):
|
|
|
|
submission = reddit_instance.submission(id=test_submission_id)
|
|
|
|
result = DownloadFactory.pull_lever(submission.url)
|
|
|
|
assert result is expected_class
|
2021-02-11 12:09:37 +13:00
|
|
|
|
|
|
|
|
2021-03-01 12:51:44 +13:00
|
|
|
@pytest.mark.parametrize('test_url', (
|
|
|
|
'random.com',
|
|
|
|
'bad',
|
|
|
|
))
|
|
|
|
def test_factory_lever_bad(test_url: str):
|
|
|
|
with pytest.raises(NotADownloadableLinkError):
|
|
|
|
DownloadFactory.pull_lever(test_url)
|