Improve homekit_controller tests (#65266)
This commit is contained in:
parent
eb94fe1ca7
commit
58b8c30221
16 changed files with 1487 additions and 650 deletions
|
@ -4,9 +4,6 @@ from aiohomekit.model.services import ServicesTypes
|
|||
|
||||
from tests.components.homekit_controller.common import setup_test_component
|
||||
|
||||
LOCK_CURRENT_STATE = ("lock-mechanism", "lock-mechanism.current-state")
|
||||
LOCK_TARGET_STATE = ("lock-mechanism", "lock-mechanism.target-state")
|
||||
|
||||
|
||||
def create_lock_service(accessory):
|
||||
"""Define a lock characteristics as per page 219 of HAP spec."""
|
||||
|
@ -35,45 +32,83 @@ async def test_switch_change_lock_state(hass, utcnow):
|
|||
await hass.services.async_call(
|
||||
"lock", "lock", {"entity_id": "lock.testdevice"}, blocking=True
|
||||
)
|
||||
assert helper.characteristics[LOCK_TARGET_STATE].value == 1
|
||||
helper.async_assert_service_values(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 1,
|
||||
},
|
||||
)
|
||||
|
||||
await hass.services.async_call(
|
||||
"lock", "unlock", {"entity_id": "lock.testdevice"}, blocking=True
|
||||
)
|
||||
assert helper.characteristics[LOCK_TARGET_STATE].value == 0
|
||||
helper.async_assert_service_values(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 0,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
async def test_switch_read_lock_state(hass, utcnow):
|
||||
"""Test that we can read the state of a HomeKit lock accessory."""
|
||||
helper = await setup_test_component(hass, create_lock_service)
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 0
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 0
|
||||
state = await helper.poll_and_get_state()
|
||||
state = await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 0,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 0,
|
||||
},
|
||||
)
|
||||
assert state.state == "unlocked"
|
||||
assert state.attributes["battery_level"] == 50
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 1
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 1
|
||||
state = await helper.poll_and_get_state()
|
||||
state = await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 1,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 1,
|
||||
},
|
||||
)
|
||||
assert state.state == "locked"
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 2
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 1
|
||||
await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 2,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 1,
|
||||
},
|
||||
)
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == "jammed"
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 3
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 1
|
||||
await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 3,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 1,
|
||||
},
|
||||
)
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == "unknown"
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 0
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 1
|
||||
await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 0,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 1,
|
||||
},
|
||||
)
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == "locking"
|
||||
|
||||
helper.characteristics[LOCK_CURRENT_STATE].value = 1
|
||||
helper.characteristics[LOCK_TARGET_STATE].value = 0
|
||||
await helper.async_update(
|
||||
ServicesTypes.LOCK_MECHANISM,
|
||||
{
|
||||
CharacteristicsTypes.LOCK_MECHANISM_CURRENT_STATE: 1,
|
||||
CharacteristicsTypes.LOCK_MECHANISM_TARGET_STATE: 0,
|
||||
},
|
||||
)
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == "unlocking"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue