From d45c60b7640fc2c629aa1dcadf107efa01d3717c Mon Sep 17 00:00:00 2001 From: Alexander Hess Date: Sun, 31 Jan 2021 20:06:23 +0100 Subject: [PATCH] Add `OrderHistory.time_step` property --- src/urban_meal_delivery/forecasts/timify.py | 5 +++ tests/forecasts/timify/test_order_history.py | 34 +++++++++++++------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/urban_meal_delivery/forecasts/timify.py b/src/urban_meal_delivery/forecasts/timify.py index cacee23..c52aef3 100644 --- a/src/urban_meal_delivery/forecasts/timify.py +++ b/src/urban_meal_delivery/forecasts/timify.py @@ -39,6 +39,11 @@ class OrderHistory: # The `_data` are populated by `.aggregate_orders()`. self._data = None + @property + def time_step(self) -> int: + """The length of one time step.""" + return self._time_step + @property def totals(self) -> pd.DataFrame: """The order totals by `Pixel` and `.time_step`. diff --git a/tests/forecasts/timify/test_order_history.py b/tests/forecasts/timify/test_order_history.py index eb6bbcc..cbf1530 100644 --- a/tests/forecasts/timify/test_order_history.py +++ b/tests/forecasts/timify/test_order_history.py @@ -6,33 +6,43 @@ from tests import config as test_config from urban_meal_delivery.forecasts import timify +@pytest.fixture +def order_history(grid): + """An `OrderHistory` object.""" + return timify.OrderHistory(grid=grid, time_step=test_config.LONG_TIME_STEP) + + class TestSpecialMethods: """Test the special methods in `OrderHistory`.""" - @pytest.mark.parametrize('time_step', test_config.TIME_STEPS) - def test_instantiate(self, grid, time_step): + def test_instantiate(self, order_history): """Test `OrderHistory.__init__()`.""" - oh = timify.OrderHistory(grid=grid, time_step=time_step) - - assert oh is not None + assert order_history is not None class TestProperties: """Test the properties in `OrderHistory`.""" - def test_totals_is_cached(self, grid, monkeypatch): - """Test `.totals` property. + @pytest.mark.parametrize('time_step', test_config.TIME_STEPS) + def test_time_step(self, grid, time_step): + """Test `OrderHistory.time_step` property.""" + order_history = timify.OrderHistory(grid=grid, time_step=time_step) + + result = order_history.time_step + + assert result == time_step + + def test_totals_is_cached(self, order_history, monkeypatch): + """Test `OrderHistory.totals` property. The result of the `OrderHistory.aggregate_orders()` method call is cached in the `OrderHistory.totals` property. """ - oh = timify.OrderHistory(grid=grid, time_step=test_config.LONG_TIME_STEP) - sentinel = object() - monkeypatch.setattr(oh, 'aggregate_orders', lambda: sentinel) + monkeypatch.setattr(order_history, 'aggregate_orders', lambda: sentinel) - result1 = oh.totals - result2 = oh.totals + result1 = order_history.totals + result2 = order_history.totals assert result1 is result2 assert result1 is sentinel