mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Added downloader unit tests
This commit is contained in:
parent
0e9f43e3c8
commit
320aec959e
4 changed files with 62 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ pandas
|
|||
mypy
|
||||
pytest
|
||||
mock
|
||||
pytest-cov
|
||||
pytest-cov
|
||||
pytest-mock
|
||||
56
epc_data/tests/test_downloader.py
Normal file
56
epc_data/tests/test_downloader.py
Normal 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 == []
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue