42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
|
"""Test Z-Wave Locks."""
|
||
|
from .common import setup_ozw
|
||
|
|
||
|
|
||
|
async def test_lock(hass, lock_data, sent_messages, lock_msg):
|
||
|
"""Test lock."""
|
||
|
receive_message = await setup_ozw(hass, fixture=lock_data)
|
||
|
|
||
|
# Test loaded
|
||
|
state = hass.states.get("lock.danalock_v3_btze_locked")
|
||
|
assert state is not None
|
||
|
assert state.state == "unlocked"
|
||
|
|
||
|
# Test locking
|
||
|
await hass.services.async_call(
|
||
|
"lock", "lock", {"entity_id": "lock.danalock_v3_btze_locked"}, blocking=True
|
||
|
)
|
||
|
assert len(sent_messages) == 1
|
||
|
msg = sent_messages[0]
|
||
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
||
|
assert msg["payload"] == {"Value": True, "ValueIDKey": 173572112}
|
||
|
|
||
|
# Feedback on state
|
||
|
lock_msg.decode()
|
||
|
lock_msg.payload["Value"] = True
|
||
|
lock_msg.encode()
|
||
|
receive_message(lock_msg)
|
||
|
await hass.async_block_till_done()
|
||
|
|
||
|
state = hass.states.get("lock.danalock_v3_btze_locked")
|
||
|
assert state is not None
|
||
|
assert state.state == "locked"
|
||
|
|
||
|
# Test unlocking
|
||
|
await hass.services.async_call(
|
||
|
"lock", "unlock", {"entity_id": "lock.danalock_v3_btze_locked"}, blocking=True
|
||
|
)
|
||
|
assert len(sent_messages) == 2
|
||
|
msg = sent_messages[1]
|
||
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
||
|
assert msg["payload"] == {"Value": False, "ValueIDKey": 173572112}
|