from __future__ import annotations import pytest from domain.fuel_rates.fuel import Fuel, UnpricedFuel from domain.fuel_rates.fuel_rates import FuelRate, FuelRates def _rates() -> FuelRates: return FuelRates( period="test", seg_export_p_per_kwh=15.0, rates={Fuel.MAINS_GAS: FuelRate(unit_rate_p_per_kwh=5.74, standing_charge_p_per_day=29.09)}, ) def test_unit_rate_and_standing_charge_read_back_for_a_priced_fuel() -> None: # Arrange rates = _rates() # Act / Assert assert rates.unit_rate_p_per_kwh(Fuel.MAINS_GAS) == 5.74 assert rates.standing_charge_p_per_day(Fuel.MAINS_GAS) == 29.09 def test_a_fuel_absent_from_the_snapshot_raises_unpriced_fuel() -> None: # Arrange — LPG is not in this snapshot. rates = _rates() # Act / Assert — the raise carries the offending fuel for the operator. with pytest.raises(UnpricedFuel) as excinfo: rates.unit_rate_p_per_kwh(Fuel.LPG) assert excinfo.value.fuel is Fuel.LPG