M8-R03B: keep meter swap recompute in caller transaction
This commit is contained in:
@@ -2176,6 +2176,32 @@ class TestComputeClosedPeriods:
|
||||
|
||||
|
||||
class TestRecomputeRange:
|
||||
def test_default_commit_is_visible_to_a_new_session(self, energy_db: Session) -> None:
|
||||
"""The public recompute API retains its standalone commit behaviour."""
|
||||
_setup_manual_scenario(energy_db)
|
||||
|
||||
assert recompute_range(energy_db, _T0, _T1) == 1
|
||||
assert energy_db.bind is not None
|
||||
with Session(energy_db.bind) as observer:
|
||||
row = observer.execute(
|
||||
select(EnergyCostPeriod).where(EnergyCostPeriod.period_start == _T0)
|
||||
).scalar_one()
|
||||
assert row.degraded is False
|
||||
|
||||
def test_commit_false_leaves_recompute_for_caller_to_rollback(self, energy_db: Session) -> None:
|
||||
"""Caller-owned recompute writes disappear entirely after rollback."""
|
||||
_setup_manual_scenario(energy_db)
|
||||
|
||||
assert recompute_range(energy_db, _T0, _T1, commit=False) == 1
|
||||
energy_db.rollback()
|
||||
|
||||
assert energy_db.bind is not None
|
||||
with Session(energy_db.bind) as observer:
|
||||
rows = observer.execute(
|
||||
select(EnergyCostPeriod).where(EnergyCostPeriod.period_start == _T0)
|
||||
).scalars().all()
|
||||
assert rows == []
|
||||
|
||||
def test_overwrites_existing_rows(self, energy_db: Session) -> None:
|
||||
"""recompute_range must overwrite non-degraded rows (explicit opt-in)."""
|
||||
contract = _make_contract(energy_db, kind="manual", active=True)
|
||||
|
||||
Reference in New Issue
Block a user