From 18083822ea625c7c03a3e33935faf12935b526ea Mon Sep 17 00:00:00 2001 From: Tianyu Liu Date: Mon, 24 Aug 2026 04:13:11 +0200 Subject: [PATCH] M8-R04A: fix fake discovery receive clock --- tests/test_meter_source_api.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/test_meter_source_api.py b/tests/test_meter_source_api.py index e686e54..36968b1 100644 --- a/tests/test_meter_source_api.py +++ b/tests/test_meter_source_api.py @@ -695,15 +695,16 @@ def test_real_warmtelink_discovery_waits_for_admission_and_keeps_its_serial_owne ): """A rejected candidate is neither a discovery success nor exposed metadata.""" from app.integrations.p1 import dsmr_crc16 + from app.services.warmtelink_ingest import WarmteLinkIngestor from app.services import warmtelink_worker - from app.services.warmtelink_worker import WarmteLinkWorkerManager + from app.services.warmtelink_worker import WarmteLinkWorker, WarmteLinkWorkerManager engine = create_engine(auth_database["app_url"], connect_args={"check_same_thread": False}) + received_at = datetime(2026, 8, 22, 10, 0, 30, tzinfo=UTC) # 12:00:30 Europe/Amsterdam. with Session(engine) as session: - now = datetime.now(UTC) source = MeterSource( name="Serial", kind="warmtelink_serial", enabled=True, config={"path": "/dev/fake"}, - created_at=now, updated_at=now, + created_at=received_at, updated_at=received_at, ) session.add(source) session.commit() @@ -745,6 +746,12 @@ def test_real_warmtelink_discovery_waits_for_admission_and_keeps_its_serial_owne monkeypatch.setattr(warmtelink_worker, "_DISCOVERY_WAIT_SECONDS", 0.02) manager = WarmteLinkWorkerManager( session_factory=lambda: Session(engine), serial_factory=lambda _config: FakeReadOnlySerial(), + worker_factory=lambda source_id, config, **kwargs: WarmteLinkWorker( + source_id, + config, + ingestor=WarmteLinkIngestor(clock=lambda: received_at), + **kwargs, + ), ) manager.reconcile() serial = FakeReadOnlySerial.instances[0]