core/tests/components/rfxtrx/test_siren.py

138 lines
4.1 KiB
Python
Raw Normal View History

"""The tests for the Rfxtrx siren platform."""
from unittest.mock import call
from homeassistant.components.rfxtrx import DOMAIN
from homeassistant.core import HomeAssistant
from .conftest import create_rfx_test_cfg
from tests.common import MockConfigEntry
async def test_one_chime(hass: HomeAssistant, rfxtrx, timestep) -> None:
"""Test with 1 entity."""
entry_data = create_rfx_test_cfg(
devices={"0a16000000000000000000": {"off_delay": 2.0}}
)
mock_entry = MockConfigEntry(domain="rfxtrx", unique_id=DOMAIN, data=entry_data)
mock_entry.add_to_hass(hass)
entity_id = "siren.byron_sx_00_00"
await hass.config_entries.async_setup(mock_entry.entry_id)
await hass.async_block_till_done()
state = hass.states.get(entity_id)
assert state
assert state.state == "off"
assert state.attributes.get("friendly_name") == "Byron SX 00:00"
await hass.services.async_call(
"siren", "turn_on", {"entity_id": entity_id}, blocking=True
)
state = hass.states.get(entity_id)
assert state.state == "on"
await timestep(5)
state = hass.states.get(entity_id)
assert state.state == "off"
await hass.services.async_call(
"siren", "turn_on", {"entity_id": entity_id, "tone": "Sound 1"}, blocking=True
)
state = hass.states.get(entity_id)
assert state.state == "on"
await timestep(3)
state = hass.states.get(entity_id)
assert state.state == "off"
await rfxtrx.signal("0a16000000000000000000")
state = hass.states.get(entity_id)
assert state.state == "on"
await timestep(3)
state = hass.states.get(entity_id)
assert state.state == "off"
assert rfxtrx.transport.send.mock_calls == [
call(bytearray(b"\x07\x16\x00\x00\x00\x00\x00\x00")),
call(bytearray(b"\x07\x16\x00\x00\x00\x00\x01\x00")),
]
async def test_one_security1(hass: HomeAssistant, rfxtrx, timestep) -> None:
"""Test with 1 entity."""
entry_data = create_rfx_test_cfg(devices={"08200300a109000670": {"off_delay": 2.0}})
mock_entry = MockConfigEntry(domain="rfxtrx", unique_id=DOMAIN, data=entry_data)
mock_entry.add_to_hass(hass)
entity_id = "siren.kd101_smoke_detector_a10900_32"
await hass.config_entries.async_setup(mock_entry.entry_id)
await hass.async_block_till_done()
state = hass.states.get(entity_id)
assert state
assert state.state == "off"
assert state.attributes.get("friendly_name") == "KD101 Smoke Detector a10900:32"
await hass.services.async_call(
"siren", "turn_on", {"entity_id": entity_id}, blocking=True
)
state = hass.states.get(entity_id)
assert state.state == "on"
await hass.services.async_call(
"siren", "turn_off", {"entity_id": entity_id}, blocking=True
)
state = hass.states.get(entity_id)
assert state.state == "off"
await hass.services.async_call(
"siren", "turn_on", {"entity_id": entity_id}, blocking=True
)
state = hass.states.get(entity_id)
assert state.state == "on"
await timestep(11)
state = hass.states.get(entity_id)
assert state.state == "off"
await rfxtrx.signal("08200300a109000670")
state = hass.states.get(entity_id)
assert state.state == "on"
await rfxtrx.signal("08200300a109000770")
state = hass.states.get(entity_id)
assert state.state == "off"
assert rfxtrx.transport.send.mock_calls == [
call(bytearray(b"\x08\x20\x03\x00\xa1\x09\x00\x06\x00")),
call(bytearray(b"\x08\x20\x03\x01\xa1\x09\x00\x07\x00")),
call(bytearray(b"\x08\x20\x03\x02\xa1\x09\x00\x06\x00")),
]
async def test_discover_siren(hass: HomeAssistant, rfxtrx_automatic) -> None:
"""Test with discovery."""
rfxtrx = rfxtrx_automatic
await rfxtrx.signal("0a16000000000000000000")
state = hass.states.get("siren.byron_sx_00_00")
assert state
assert state.state == "on"
assert state.attributes.get("friendly_name") == "Byron SX 00:00"
await rfxtrx.signal("0a16010000000000000000")
state = hass.states.get("siren.byron_mp001_00_00")
assert state
assert state.state == "on"
assert state.attributes.get("friendly_name") == "Byron MP001 00:00"