From 285d422c0ee2296652f0ee0f473df8abb322f2c2 Mon Sep 17 00:00:00 2001 From: Serene-Arc Date: Thu, 11 Mar 2021 22:18:54 +1000 Subject: [PATCH] Add some more integration tests --- bulkredditdownloader/downloader.py | 9 ++--- .../tests/test_integration.py | 35 ++++++++++++++++--- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/bulkredditdownloader/downloader.py b/bulkredditdownloader/downloader.py index f90dbf8..2e00c42 100644 --- a/bulkredditdownloader/downloader.py +++ b/bulkredditdownloader/downloader.py @@ -226,11 +226,12 @@ class RedditDownloader: for multi in self.args.multireddit: try: multi = self._sanitise_subreddit_name(multi) - out.append(sort_function( - self.reddit_instance.multireddit(self.args.user, multi), - limit=self.args.limit)) + multi = self.reddit_instance.multireddit(self.args.user, multi) + if not multi.subreddits: + raise errors.BulkDownloaderException + out.append(sort_function(multi, limit=self.args.limit)) logger.debug(f'Added submissions from multireddit {multi}') - except (errors.BulkDownloaderException, praw.exceptions.PRAWException) as e: + except (errors.BulkDownloaderException, praw.exceptions.PRAWException, prawcore.PrawcoreException) as e: logger.error(f'Failed to get submissions for multireddit {multi}: {e}') return out else: diff --git a/bulkredditdownloader/tests/test_integration.py b/bulkredditdownloader/tests/test_integration.py index f554e8b..beb9be1 100644 --- a/bulkredditdownloader/tests/test_integration.py +++ b/bulkredditdownloader/tests/test_integration.py @@ -21,6 +21,13 @@ from bulkredditdownloader.__main__ import cli ['-s', 'r/TrollXChromosomes/', '-L', 1], ['-s', 'TrollXChromosomes/', '-L', 1], ['-s', 'trollxchromosomes', '-L', 1], + ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day'], + ['-s', 'trollxchromosomes', '-L', 1, '--sort', 'new'], + ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--sort', 'new'], + ['-s', 'trollxchromosomes', '-L', 1, '--search', 'women'], + ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--search', 'women'], + ['-s', 'trollxchromosomes', '-L', 1, '--sort', 'new', '--search', 'women'], + ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--sort', 'new', '--search', 'women'], )) def test_cli_download_subreddits(test_args: list[str], tmp_path: Path): runner = CliRunner() @@ -50,6 +57,9 @@ def test_cli_download_links(test_args: list[str], tmp_path: Path): @pytest.mark.skipif(Path('test_config.cfg') is False, reason='A test config file is required for integration tests') @pytest.mark.parametrize('test_args', ( ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10], + ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--sort', 'rising'], + ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--time', 'week'], + ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--time', 'week', '--sort', 'rising'], )) def test_cli_download_multireddit(test_args: list[str], tmp_path: Path): runner = CliRunner() @@ -59,15 +69,32 @@ def test_cli_download_multireddit(test_args: list[str], tmp_path: Path): assert 'Added submissions from multireddit ' in result.output +@pytest.mark.online +@pytest.mark.reddit +@pytest.mark.skipif(Path('test_config.cfg') is False, reason='A test config file is required for integration tests') +@pytest.mark.parametrize('test_args', ( + ['--user', 'helen_darten', '-m', 'xxyyzzqwertty', '-L', 10], +)) +def test_cli_download_multireddit_nonexistent(test_args: list[str], tmp_path: Path): + runner = CliRunner() + test_args = ['download', str(tmp_path), '-v', '--config', 'test_config.cfg'] + test_args + result = runner.invoke(cli, test_args) + assert result.exit_code == 0 + assert 'Failed to get submissions for multireddit xxyyzzqwerty' in result.output + + @pytest.mark.online @pytest.mark.reddit @pytest.mark.authenticated @pytest.mark.skipif(Path('test_config.cfg') is False, reason='A test config file is required for integration tests') @pytest.mark.parametrize('test_args', ( - ['--user', 'me', '--upvoted', '--authenticate', '-L', 10, '--set-folder-scheme', ''], - ['--user', 'me', '--saved', '--authenticate', '-L', 10, '--set-folder-scheme', ''], - ['--user', 'me', '--submitted', '--authenticate', '-L', 10, '--set-folder-scheme', ''], - ['--user', 'djnish', '--submitted', '-L', 10, '--set-folder-scheme', ''], + ['--user', 'me', '--upvoted', '--authenticate', '-L', 10], + ['--user', 'me', '--saved', '--authenticate', '-L', 10], + ['--user', 'me', '--submitted', '--authenticate', '-L', 10], + ['--user', 'djnish', '--submitted', '-L', 10], + ['--user', 'djnish', '--submitted', '-L', 10, '--time', 'month'], + ['--user', 'djnish', '--submitted', '-L', 10, '--sort', 'controversial'], + ['--user', 'djnish', '--submitted', '-L', 10, '--sort', 'controversial', '--time', 'month'], )) def test_cli_download_user_data_good(test_args: list[str], tmp_path: Path): runner = CliRunner()