Files
bonobo/tests/commands/test_download.py

46 lines
1.2 KiB
Python

import io
from unittest.mock import patch
import pytest
from bonobo.commands.download import EXAMPLES_BASE_URL
from bonobo.util.testing import all_runners
@all_runners
def test_download_works_for_examples(runner):
expected_bytes = b"hello world"
class MockResponse(object):
def __init__(self):
self.status_code = 200
def iter_content(self, *args, **kwargs):
return [expected_bytes]
def __enter__(self):
return self
def __exit__(self, *args, **kwargs):
pass
fout = io.BytesIO()
fout.close = lambda: None
with patch("bonobo.commands.download._open_url") as mock_open_url, patch(
"bonobo.commands.download.open"
) as mock_open:
mock_open_url.return_value = MockResponse()
mock_open.return_value = fout
runner("download", "examples/datasets/coffeeshops.txt")
expected_url = EXAMPLES_BASE_URL + "datasets/coffeeshops.txt"
mock_open_url.assert_called_once_with(expected_url)
assert fout.getvalue() == expected_bytes
@all_runners
def test_download_fails_non_example(runner):
with pytest.raises(ValueError):
runner("download", "something/entirely/different.txt")