From 68cb1fa1ed334e77c04f2111662a94e6b0be0a42 Mon Sep 17 00:00:00 2001 From: Mathias Date: Fri, 16 Oct 2026 07:51:13 +0100 Subject: [PATCH] some fixes --- tests/conftest.py | 8 ++++++++ tests/test_smoke_b4w.py | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 529c1fb..4dff4af 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -87,11 +87,19 @@ def populated_db_b4w( Only the first-layer ingestion table is filled; no further processing. ``**kwargs`` are forwarded to ``B4wExportFactory.build``; callable values are resolved per row (e.g. ``ValDt=lambda: faker.date_between(...)``). + ``Id1`` is reserved: it is set per row (``1..row_count``) and cannot be + overridden via ``**kwargs``. + The returned session is *not* closed by the fixture; close it in the test. """ def populate_db_b4w( name: str, row_count: int = DEFAULT_B4W_ROWS, **kwargs: Any ) -> Session: + if "Id1" in kwargs: + raise ValueError( + "Id1 is set per row (1..row_count) by populated_db_b4w and " + "cannot be overridden via **kwargs" + ) session = db_session_factory(name) for i in range(row_count): row_kwargs = {k: (v() if callable(v) else v) for k, v in kwargs.items()} diff --git a/tests/test_smoke_b4w.py b/tests/test_smoke_b4w.py index b1f7ac1..ae4e230 100644 --- a/tests/test_smoke_b4w.py +++ b/tests/test_smoke_b4w.py @@ -2,13 +2,22 @@ from datetime import date import faker -the_faker = faker.Faker() +from src.models.b4w import B4wDb def test_b4w_populate(populated_db_b4w): + val_dt_min, val_dt_max = date(2026, 1, 1), date(2026, 3, 31) session = populated_db_b4w( "b4w_basic", 100, - ValDt=lambda: faker.Faker().date_between(date(2026, 1, 1), date(2026, 3, 31)), + ValDt=lambda: faker.Faker().date_between(val_dt_min, val_dt_max), ) assert session + assert session.query(B4wDb).count() == 100 + # ``ValDt`` was given as a per-row callable: it must have been resolved + # and persisted for every row. + dates = [d for (d,) in session.query(B4wDb.date_valid).all()] + assert all(val_dt_min <= d <= val_dt_max for d in dates) + # ``Id1`` is assigned per row: one distinct row per id, no dedup collisions. + ids = [i for (i,) in session.query(B4wDb.id_b4w).order_by(B4wDb.id_b4w).all()] + assert ids == list(range(1, 101))