chore(docs): clean comment format
This commit is contained in:
@@ -4,22 +4,15 @@ from unittest.mock import MagicMock
|
||||
|
||||
|
||||
def make_mock_engine(select_rows: list[tuple] | None = None):
|
||||
"""Return a mock SQLAlchemy engine.
|
||||
|
||||
Args:
|
||||
select_rows: Rows to return from *connect()* (SELECT queries).
|
||||
Defaults to an empty list.
|
||||
"""
|
||||
"""Return a mock SQLAlchemy engine."""
|
||||
select_rows = select_rows or []
|
||||
|
||||
engine = MagicMock()
|
||||
|
||||
# engine.begin() context manager → conn for DDL / writes
|
||||
write_conn = MagicMock()
|
||||
engine.begin.return_value.__enter__ = MagicMock(return_value=write_conn)
|
||||
engine.begin.return_value.__exit__ = MagicMock(return_value=False)
|
||||
|
||||
# engine.connect() context manager → conn for SELECTs
|
||||
read_conn = MagicMock()
|
||||
read_conn.execute.return_value = iter(select_rows)
|
||||
engine.connect.return_value.__enter__ = MagicMock(return_value=read_conn)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Tests for Funda Dagster assets using mocked external dependencies."""
|
||||
"""Tests for Funda assets."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
@@ -12,13 +12,9 @@ from data_platform.assets.funda import (
|
||||
)
|
||||
from tests.conftest import make_mock_engine, make_mock_listing
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Duck-typed mock resources (bypass frozen-Pydantic ConfigurableResource)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class MockFundaResource:
|
||||
"""Minimal test double for FundaResource."""
|
||||
"""Test double for FundaResource."""
|
||||
|
||||
def __init__(self, client):
|
||||
self._client = client
|
||||
@@ -28,7 +24,7 @@ class MockFundaResource:
|
||||
|
||||
|
||||
class MockPostgresResource:
|
||||
"""Minimal test double for PostgresResource."""
|
||||
"""Test double for PostgresResource."""
|
||||
|
||||
def __init__(self, engine=None, inserted_rows: list | None = None):
|
||||
self._engine = engine or make_mock_engine()[0]
|
||||
@@ -44,10 +40,6 @@ class MockPostgresResource:
|
||||
self._inserted_rows.extend(rows)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Shared listing data
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
_SEARCH_LISTING_DATA = {
|
||||
"global_id": "1234567",
|
||||
"title": "Teststraat 1",
|
||||
@@ -95,11 +87,6 @@ _DETAIL_LISTING_DATA = {
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# funda_search_results
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestFundaSearchResults:
|
||||
def _run(self, mock_client, inserted_rows=None, config=None):
|
||||
engine, _, _ = make_mock_engine()
|
||||
@@ -204,11 +191,6 @@ class TestFundaSearchResults:
|
||||
assert client.search_listing.call_args[1]["energy_label"] == ["A", "A+"]
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# funda_listing_details
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestFundaListingDetails:
|
||||
def _run(self, mock_client, engine, inserted_rows=None):
|
||||
rows = inserted_rows if inserted_rows is not None else []
|
||||
@@ -256,11 +238,6 @@ class TestFundaListingDetails:
|
||||
assert len(inserted) == 1
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# funda_price_history
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestFundaPriceHistory:
|
||||
def _run(self, mock_client, engine, inserted_rows=None):
|
||||
rows = inserted_rows if inserted_rows is not None else []
|
||||
@@ -312,11 +289,6 @@ class TestFundaPriceHistory:
|
||||
assert mat[0].metadata["count"].value == 2
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# FundaSearchConfig
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestFundaSearchConfig:
|
||||
def test_defaults(self):
|
||||
cfg = FundaSearchConfig()
|
||||
@@ -337,8 +309,3 @@ class TestFundaSearchConfig:
|
||||
assert cfg.location == "rotterdam"
|
||||
assert cfg.offering_type == "rent"
|
||||
assert cfg.price_max == 2000
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Helpers
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Tests for pure helper functions in data_platform.assets.helpers."""
|
||||
"""Tests for helper functions."""
|
||||
|
||||
from data_platform.helpers import (
|
||||
format_area,
|
||||
@@ -8,8 +8,6 @@ from data_platform.helpers import (
|
||||
safe_int,
|
||||
)
|
||||
|
||||
# ── safe_int ────────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestSafeInt:
|
||||
def test_none_returns_none(self):
|
||||
@@ -43,9 +41,6 @@ class TestSafeInt:
|
||||
assert safe_int([1, 2, 3]) is None
|
||||
|
||||
|
||||
# ── safe ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestSafe:
|
||||
def test_dict_becomes_json_string(self):
|
||||
result = safe({"key": "val"})
|
||||
@@ -76,9 +71,6 @@ class TestSafe:
|
||||
assert json.loads(result) == data
|
||||
|
||||
|
||||
# ── format_euro ──────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestFormatEuro:
|
||||
def test_formats_price(self):
|
||||
assert format_euro(350000) == "€350,000"
|
||||
@@ -90,9 +82,6 @@ class TestFormatEuro:
|
||||
assert format_euro(0) == "–"
|
||||
|
||||
|
||||
# ── format_area ──────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestFormatArea:
|
||||
def test_formats_area(self):
|
||||
assert format_area(80) == "80 m²"
|
||||
@@ -104,9 +93,6 @@ class TestFormatArea:
|
||||
assert format_area(0) == "–"
|
||||
|
||||
|
||||
# ── md_preview_table ─────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestMdPreviewTable:
|
||||
def test_empty_rows_returns_header_only(self):
|
||||
result = md_preview_table([], columns=[("title", "Title"), ("city", "City")])
|
||||
|
||||
@@ -4,8 +4,6 @@ from unittest.mock import MagicMock, patch
|
||||
|
||||
from data_platform.resources import FundaResource, PostgresResource
|
||||
|
||||
# ── FundaResource ─────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestFundaResource:
|
||||
def test_get_client_returns_funda_instance(self):
|
||||
@@ -24,9 +22,6 @@ class TestFundaResource:
|
||||
assert resource.timeout == 60
|
||||
|
||||
|
||||
# ── PostgresResource ──────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestPostgresResource:
|
||||
def _make_resource(self, **kwargs):
|
||||
defaults = {
|
||||
@@ -60,7 +55,6 @@ class TestPostgresResource:
|
||||
assert call_url.startswith("postgresql://")
|
||||
|
||||
def test_execute_calls_engine_begin(self):
|
||||
"""execute() wraps its statement in engine.begin()."""
|
||||
mock_engine = MagicMock()
|
||||
mock_conn = MagicMock()
|
||||
mock_engine.begin.return_value.__enter__ = MagicMock(return_value=mock_conn)
|
||||
@@ -74,7 +68,6 @@ class TestPostgresResource:
|
||||
mock_conn.execute.assert_called_once()
|
||||
|
||||
def test_execute_many_calls_engine_begin(self):
|
||||
"""execute_many() wraps its statement in engine.begin()."""
|
||||
mock_engine = MagicMock()
|
||||
mock_conn = MagicMock()
|
||||
mock_engine.begin.return_value.__enter__ = MagicMock(return_value=mock_conn)
|
||||
|
||||
Reference in New Issue
Block a user