Add some more tests for downloader

This commit is contained in:
Serene-Arc
2021-03-10 11:06:50 +10:00
committed by Ali Parlakci
parent d2cc3e8b6a
commit 09e42ff5f9
2 changed files with 37 additions and 15 deletions

View File

@@ -164,7 +164,7 @@ class RedditDownloader:
def _resolve_user_name(self): def _resolve_user_name(self):
if self.args.user == 'me': if self.args.user == 'me':
self.args.user = self.reddit_instance.user.me() self.args.user = self.reddit_instance.user.me().name
def _get_submissions_from_link(self) -> list[list[praw.models.Submission]]: def _get_submissions_from_link(self) -> list[list[praw.models.Submission]]:
supplied_submissions = [] supplied_submissions = []
@@ -215,9 +215,9 @@ class RedditDownloader:
raise errors.RedditAuthenticationError('Accessing user lists requires authentication') raise errors.RedditAuthenticationError('Accessing user lists requires authentication')
else: else:
if self.args.upvoted: if self.args.upvoted:
generators.append(self.reddit_instance.redditor(self.args.user).upvoted) generators.append(self.reddit_instance.redditor(self.args.user).upvoted(limit=self.args.limit))
if self.args.saved: if self.args.saved:
generators.append(self.reddit_instance.redditor(self.args.user).saved) generators.append(self.reddit_instance.redditor(self.args.user).saved(limit=self.args.limit))
return generators return generators
else: else:
raise errors.BulkDownloaderException('A user must be supplied to download user data') raise errors.BulkDownloaderException('A user must be supplied to download user data')

View File

@@ -300,30 +300,52 @@ def test_get_user_nonexistent_user(test_user: str, downloader_mock: MagicMock, r
@pytest.mark.online @pytest.mark.online
@pytest.mark.reddit @pytest.mark.reddit
@pytest.mark.skip @pytest.mark.authenticated
def test_get_user_upvoted(): def test_get_user_upvoted(downloader_mock: MagicMock, authenticated_reddit_instance: praw.Reddit):
raise NotImplementedError downloader_mock.reddit_instance = authenticated_reddit_instance
downloader_mock.args.user = 'me'
downloader_mock.args.upvoted = True
downloader_mock.args.limit = 10
downloader_mock._determine_sort_function.return_value = praw.models.Subreddit.hot
downloader_mock.sort_filter = RedditTypes.SortType.HOT
RedditDownloader._resolve_user_name(downloader_mock)
results = RedditDownloader._get_user_data(downloader_mock)
assert_all_results_are_submissions(10, results)
@pytest.mark.online @pytest.mark.online
@pytest.mark.reddit @pytest.mark.reddit
@pytest.mark.skip def test_get_user_upvoted_unauthenticated(downloader_mock: MagicMock, reddit_instance: praw.Reddit):
def test_get_user_upvoted_unauthenticated(): downloader_mock.args.user = 'random'
raise NotImplementedError downloader_mock.args.upvoted = True
downloader_mock.authenticated = False
with pytest.raises(RedditAuthenticationError):
RedditDownloader._get_user_data(downloader_mock)
@pytest.mark.online @pytest.mark.online
@pytest.mark.reddit @pytest.mark.reddit
@pytest.mark.skip @pytest.mark.authenticated
def test_get_user_saved(): def test_get_user_saved(downloader_mock: MagicMock, authenticated_reddit_instance: praw.Reddit):
raise NotImplementedError downloader_mock.reddit_instance = authenticated_reddit_instance
downloader_mock.args.user = 'me'
downloader_mock.args.saved = True
downloader_mock.args.limit = 10
downloader_mock._determine_sort_function.return_value = praw.models.Subreddit.hot
downloader_mock.sort_filter = RedditTypes.SortType.HOT
RedditDownloader._resolve_user_name(downloader_mock)
results = RedditDownloader._get_user_data(downloader_mock)
assert_all_results_are_submissions(10, results)
@pytest.mark.online @pytest.mark.online
@pytest.mark.reddit @pytest.mark.reddit
@pytest.mark.skip def test_get_user_saved_unauthenticated(downloader_mock: MagicMock, reddit_instance: praw.Reddit):
def test_get_user_saved_unauthenticated(): downloader_mock.args.user = 'random'
raise NotImplementedError downloader_mock.args.saved = True
downloader_mock.authenticated = False
with pytest.raises(RedditAuthenticationError):
RedditDownloader._get_user_data(downloader_mock)
@pytest.mark.online @pytest.mark.online