aboutsummaryrefslogtreecommitdiff
path: root/tests/test_dl.py
diff options
context:
space:
mode:
authorCody Logan <cody@lokken.dev>2023-11-01 11:55:44 -0700
committerGitHub <noreply@github.com>2023-11-01 11:55:44 -0700
commit15ffefbd0ca80f240b5468b4ab5cea5e9800ad83 (patch)
treec0b5bd30f23183cd81f67622c3534e0ee5417bee /tests/test_dl.py
parente11e6ec4fc6180f2ffc4905b2561ecc385a29e5d (diff)
parent823171ba0bf42766446509f0143b95078285a1f0 (diff)
downloadwikiget-15ffefbd0ca80f240b5468b4ab5cea5e9800ad83.tar.gz
wikiget-15ffefbd0ca80f240b5468b4ab5cea5e9800ad83.zip
Merge pull request #11 from clpo13/add-tests
Add and improve some tests
Diffstat (limited to 'tests/test_dl.py')
-rw-r--r--tests/test_dl.py64
1 files changed, 63 insertions, 1 deletions
diff --git a/tests/test_dl.py b/tests/test_dl.py
index 69ff2bb..61efbe0 100644
--- a/tests/test_dl.py
+++ b/tests/test_dl.py
@@ -16,10 +16,12 @@
# along with Wikiget. If not, see <https://www.gnu.org/licenses/>.
from pathlib import Path
+from unittest.mock import MagicMock, patch
import pytest
-from wikiget.dl import prep_download
+from wikiget.dl import prep_download, process_download
+from wikiget.file import File
from wikiget.wikiget import construct_parser
@@ -44,3 +46,63 @@ class TestPrepDownload:
args = construct_parser().parse_args(["File:Example.jpg", "-o", str(tmp_file)])
with pytest.raises(FileExistsError):
_ = prep_download(args.FILE, args)
+
+
+class TestProcessDownload:
+ @patch("wikiget.dl.batch_download")
+ def test_batch_download(self, mock_batch_download: MagicMock) -> None:
+ """
+ A successful batch download should not return any errors.
+ """
+ args = construct_parser().parse_args(["-a", "batch.txt"])
+ mock_batch_download.return_value = 0
+ process_download(args)
+ assert mock_batch_download.called
+
+ @patch("wikiget.dl.batch_download")
+ def test_batch_download_with_errors(
+ self, mock_batch_download: MagicMock, caplog: pytest.LogCaptureFixture
+ ) -> None:
+ """
+ Any errors during batch download should create a log message containing the
+ number of errors and result in a non-zero exit code.
+ """
+ args = construct_parser().parse_args(["-a", "batch.txt"])
+ mock_batch_download.return_value = 4
+ with pytest.raises(SystemExit) as e:
+ process_download(args)
+ assert mock_batch_download.called
+ assert e.value.code == 1
+ assert "4 problems encountered during batch processing" in caplog.text
+
+ @patch("wikiget.dl.prep_download")
+ @patch("wikiget.dl.download")
+ def test_single_download(
+ self, mock_download: MagicMock, mock_prep_download: MagicMock
+ ) -> None:
+ """
+ A successful download should not return any errors.
+ """
+ args = construct_parser().parse_args(["File:Example.jpg"])
+ mock_download.return_value = 0
+ mock_prep_download.return_value = MagicMock(File)
+ process_download(args)
+ assert mock_prep_download.called
+ assert mock_download.called
+
+ @patch("wikiget.dl.prep_download")
+ @patch("wikiget.dl.download")
+ def test_single_download_with_errors(
+ self, mock_download: MagicMock, mock_prep_download: MagicMock
+ ) -> None:
+ """
+ Any errors during download should result in a non-zero exit code.
+ """
+ args = construct_parser().parse_args(["File:Example.jpg"])
+ mock_download.return_value = 1
+ mock_prep_download.return_value = MagicMock(File)
+ with pytest.raises(SystemExit) as e:
+ process_download(args)
+ assert mock_prep_download.called
+ assert mock_download.called
+ assert e.value.code == 1