Make ESPHome deep sleep tests more robust (#98535)

This commit is contained in:
J. Nick Koston 2023-08-16 11:05:22 -05:00 committed by GitHub
parent 4180e2e477
commit 5bf80a0f6d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -8,10 +8,12 @@ from aioesphomeapi import (
BinarySensorState, BinarySensorState,
EntityInfo, EntityInfo,
EntityState, EntityState,
SensorInfo,
SensorState,
UserService, UserService,
) )
from homeassistant.const import ATTR_RESTORED, STATE_ON, STATE_UNAVAILABLE from homeassistant.const import ATTR_RESTORED, STATE_OFF, STATE_ON, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .conftest import MockESPHomeDevice from .conftest import MockESPHomeDevice
@ -149,10 +151,17 @@ async def test_deep_sleep_device(
name="my binary_sensor", name="my binary_sensor",
unique_id="my_binary_sensor", unique_id="my_binary_sensor",
), ),
SensorInfo(
object_id="my_sensor",
key=3,
name="my sensor",
unique_id="my_sensor",
),
] ]
states = [ states = [
BinarySensorState(key=1, state=True, missing_state=False), BinarySensorState(key=1, state=True, missing_state=False),
BinarySensorState(key=2, state=True, missing_state=False), BinarySensorState(key=2, state=True, missing_state=False),
SensorState(key=3, state=123.0, missing_state=False),
] ]
user_service = [] user_service = []
mock_device = await mock_esphome_device( mock_device = await mock_esphome_device(
@ -165,12 +174,18 @@ async def test_deep_sleep_device(
state = hass.states.get("binary_sensor.test_mybinary_sensor") state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None assert state is not None
assert state.state == STATE_ON assert state.state == STATE_ON
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == "123"
await mock_device.mock_disconnect(False) await mock_device.mock_disconnect(False)
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get("binary_sensor.test_mybinary_sensor") state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None assert state is not None
assert state.state == STATE_UNAVAILABLE assert state.state == STATE_UNAVAILABLE
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == STATE_UNAVAILABLE
await mock_device.mock_connect() await mock_device.mock_connect()
await hass.async_block_till_done() await hass.async_block_till_done()
@ -178,12 +193,43 @@ async def test_deep_sleep_device(
state = hass.states.get("binary_sensor.test_mybinary_sensor") state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None assert state is not None
assert state.state == STATE_ON assert state.state == STATE_ON
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == "123"
await mock_device.mock_disconnect(True)
await hass.async_block_till_done()
await mock_device.mock_connect()
await hass.async_block_till_done()
mock_device.set_state(BinarySensorState(key=1, state=False, missing_state=False))
mock_device.set_state(SensorState(key=3, state=56, missing_state=False))
await hass.async_block_till_done()
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_OFF
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == "56"
await mock_device.mock_disconnect(True) await mock_device.mock_disconnect(True)
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get("binary_sensor.test_mybinary_sensor") state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None assert state is not None
assert state.state == STATE_ON assert state.state == STATE_OFF
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == "56"
await mock_device.mock_connect()
await hass.async_block_till_done()
await mock_device.mock_disconnect(False)
await hass.async_block_till_done()
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_UNAVAILABLE
state = hass.states.get("sensor.test_my_sensor")
assert state is not None
assert state.state == STATE_UNAVAILABLE
async def test_esphome_device_without_friendly_name( async def test_esphome_device_without_friendly_name(