From 09e42ff5f92463c1ec555149ec11049296b40aa9 Mon Sep 17 00:00:00 2001 From: Serene-Arc Date: Wed, 10 Mar 2021 11:06:50 +1000 Subject: [PATCH] Add some more tests for downloader --- bulkredditdownloader/downloader.py | 6 +-- bulkredditdownloader/tests/test_downloader.py | 46 ++++++++++++++----- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/bulkredditdownloader/downloader.py b/bulkredditdownloader/downloader.py index 4793433..8f13dd4 100644 --- a/bulkredditdownloader/downloader.py +++ b/bulkredditdownloader/downloader.py @@ -164,7 +164,7 @@ class RedditDownloader: def _resolve_user_name(self): 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]]: supplied_submissions = [] @@ -215,9 +215,9 @@ class RedditDownloader: raise errors.RedditAuthenticationError('Accessing user lists requires authentication') else: 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: - 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 else: raise errors.BulkDownloaderException('A user must be supplied to download user data') diff --git a/bulkredditdownloader/tests/test_downloader.py b/bulkredditdownloader/tests/test_downloader.py index f986bfe..6531ce7 100644 --- a/bulkredditdownloader/tests/test_downloader.py +++ b/bulkredditdownloader/tests/test_downloader.py @@ -300,30 +300,52 @@ def test_get_user_nonexistent_user(test_user: str, downloader_mock: MagicMock, r @pytest.mark.online @pytest.mark.reddit -@pytest.mark.skip -def test_get_user_upvoted(): - raise NotImplementedError +@pytest.mark.authenticated +def test_get_user_upvoted(downloader_mock: MagicMock, authenticated_reddit_instance: praw.Reddit): + 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.reddit -@pytest.mark.skip -def test_get_user_upvoted_unauthenticated(): - raise NotImplementedError +def test_get_user_upvoted_unauthenticated(downloader_mock: MagicMock, reddit_instance: praw.Reddit): + downloader_mock.args.user = 'random' + downloader_mock.args.upvoted = True + downloader_mock.authenticated = False + with pytest.raises(RedditAuthenticationError): + RedditDownloader._get_user_data(downloader_mock) @pytest.mark.online @pytest.mark.reddit -@pytest.mark.skip -def test_get_user_saved(): - raise NotImplementedError +@pytest.mark.authenticated +def test_get_user_saved(downloader_mock: MagicMock, authenticated_reddit_instance: praw.Reddit): + 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.reddit -@pytest.mark.skip -def test_get_user_saved_unauthenticated(): - raise NotImplementedError +def test_get_user_saved_unauthenticated(downloader_mock: MagicMock, reddit_instance: praw.Reddit): + downloader_mock.args.user = 'random' + downloader_mock.args.saved = True + downloader_mock.authenticated = False + with pytest.raises(RedditAuthenticationError): + RedditDownloader._get_user_data(downloader_mock) @pytest.mark.online