Model/model_data/tests/test_downloader.py
2023-09-12 16:06:46 +01:00

56 lines
2 KiB
Python

import pytest
from epc_api.client import EpcClient
from model_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(auth_token="123"))
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 == []