From ec75b0caf064e28b2fa883bb77cf409af4ec4071 Mon Sep 17 00:00:00 2001 From: Hmmbob <33529490+hmmbob@users.noreply.github.com> Date: Tue, 4 Jan 2022 18:41:31 +0100 Subject: [PATCH] Add Picnic last_order_max_order_time sensor (#63169) --- homeassistant/components/picnic/const.py | 11 +++++++++++ tests/components/picnic/test_sensor.py | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/homeassistant/components/picnic/const.py b/homeassistant/components/picnic/const.py index da86b00bb22..a97d46e0ad0 100644 --- a/homeassistant/components/picnic/const.py +++ b/homeassistant/components/picnic/const.py @@ -35,6 +35,7 @@ SENSOR_LAST_ORDER_SLOT_END = "last_order_slot_end" SENSOR_LAST_ORDER_STATUS = "last_order_status" SENSOR_LAST_ORDER_ETA_START = "last_order_eta_start" SENSOR_LAST_ORDER_ETA_END = "last_order_eta_end" +SENSOR_LAST_ORDER_MAX_ORDER_TIME = "last_order_max_order_time" SENSOR_LAST_ORDER_DELIVERY_TIME = "last_order_delivery_time" SENSOR_LAST_ORDER_TOTAL_PRICE = "last_order_total_price" @@ -149,6 +150,16 @@ SENSOR_TYPES: tuple[PicnicSensorEntityDescription, ...] = ( str(last_order.get("eta", {}).get("end")) ), ), + PicnicSensorEntityDescription( + key=SENSOR_LAST_ORDER_MAX_ORDER_TIME, + device_class=SensorDeviceClass.TIMESTAMP, + icon="mdi:clock-alert-outline", + entity_registry_enabled_default=True, + data_type="last_order_data", + value_fn=lambda last_order: dt_util.parse_datetime( + str(last_order.get("slot", {}).get("cut_off_time")) + ), + ), PicnicSensorEntityDescription( key=SENSOR_LAST_ORDER_DELIVERY_TIME, device_class=SensorDeviceClass.TIMESTAMP, diff --git a/tests/components/picnic/test_sensor.py b/tests/components/picnic/test_sensor.py index 7ade1e38d09..201ac563ff4 100644 --- a/tests/components/picnic/test_sensor.py +++ b/tests/components/picnic/test_sensor.py @@ -249,6 +249,11 @@ class TestPicnicSensor(unittest.IsolatedAsyncioTestCase): "2021-02-26T20:14:00+00:00", cls=SensorDeviceClass.TIMESTAMP, ) + self._assert_sensor( + "sensor.picnic_last_order_max_order_time", + "2021-02-25T21:00:00+00:00", + cls=SensorDeviceClass.TIMESTAMP, + ) self._assert_sensor( "sensor.picnic_last_order_delivery_time", "2021-02-26T19:54:05+00:00", @@ -385,6 +390,9 @@ class TestPicnicSensor(unittest.IsolatedAsyncioTestCase): ) self._assert_sensor("sensor.picnic_last_order_eta_start", STATE_UNAVAILABLE) self._assert_sensor("sensor.picnic_last_order_eta_end", STATE_UNAVAILABLE) + self._assert_sensor( + "sensor.picnic_last_order_max_order_time", STATE_UNAVAILABLE + ) self._assert_sensor("sensor.picnic_last_order_delivery_time", STATE_UNAVAILABLE) async def test_sensors_malformed_delivery_data(self): @@ -400,6 +408,7 @@ class TestPicnicSensor(unittest.IsolatedAsyncioTestCase): assert self._coordinator.last_update_success is True self._assert_sensor("sensor.picnic_last_order_eta_start", STATE_UNKNOWN) self._assert_sensor("sensor.picnic_last_order_eta_end", STATE_UNKNOWN) + self._assert_sensor("sensor.picnic_last_order_max_order_time", STATE_UNKNOWN) self._assert_sensor("sensor.picnic_last_order_delivery_time", STATE_UNKNOWN) async def test_sensors_malformed_response(self):