Added downloader unit tests

This commit is contained in:
Khalim Conn-Kowlessar 2023-06-14 12:34:40 +01:00
parent 0e9f43e3c8
commit 320aec959e
4 changed files with 62 additions and 2 deletions

View file

@ -17,6 +17,9 @@ def pagenated_epc_download(client, params, page_size, n_pages, verbose=0, slowdo
# data to be perfectly up to date
if search_resp is None:
break
n_completed += 1
results.extend(search_resp["rows"])
if n_completed == n_pages:
complete = True

View file

@ -5,4 +5,5 @@ pandas
mypy
pytest
mock
pytest-cov
pytest-cov
pytest-mock

View file

@ -0,0 +1,56 @@
import pytest
from epc_api.client import EpcClient
from epc_data.downloader import pagenated_epc_download
# Mock EPC search response
mock_epc_response = {
"rows": [
{"data1": "value1"},
{"data2": "value2"},
]
}
class TestDownloader:
@pytest.fixture
def mock_client(self, mocker):
# mocker is a wrapper around unittest.mock.Mock, extending with
# additional features specific to pytest
client = mocker.Mock(spec=EpcClient())
client.domestic.search.return_value = mock_epc_response
return client
def test_pagenated_epc_download_basic(self, mock_client):
params = {"address": "Test Address", "postcode": "AB12CD"}
page_size = len(mock_epc_response["rows"])
n_pages = 1
results = pagenated_epc_download(mock_client, params, page_size, n_pages, verbose=1)
assert len(results) == page_size * n_pages
assert results == mock_epc_response["rows"]
mock_client.domestic.search.assert_called_with(params=params, offset_from=0, size=page_size)
def test_pagenated_epc_download_multiple_pages(self, mock_client):
params = {"address": "Test Address", "postcode": "AB12CD"}
page_size = len(mock_epc_response["rows"])
n_pages = 2
results = pagenated_epc_download(mock_client, params, page_size, n_pages)
assert len(results) == page_size * n_pages
assert results == mock_epc_response["rows"] * n_pages
mock_client.domestic.search.assert_called_with(params=params, offset_from=page_size, size=page_size)
def test_pagenated_epc_download_search_returns_none(self, mock_client):
mock_client.domestic.search.return_value = None # Mock the search method to return None
params = {"address": "Test Address", "postcode": "AB12CD"}
page_size = 1
n_pages = 1
results = pagenated_epc_download(mock_client, params, page_size, n_pages)
assert results == []

View file

@ -42,7 +42,7 @@ class TestProperty:
assert inst3.data == {"some": "data"}
data = inst3.search_address_epc()
assert data is Non
assert data is None
def test_search_address_epc(self, property_instance):
# Call the method to test