Add Picnic last_order_max_order_time sensor (#63169)

This commit is contained in:
Hmmbob 2022-01-04 18:41:31 +01:00 committed by GitHub
parent 53496c019c
commit ec75b0caf0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View file

@ -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,

View file

@ -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):