"""The tests for the Rfxtrx component.""" from homeassistant.components.rfxtrx import DOMAIN from homeassistant.components.rfxtrx.const import EVENT_RFXTRX_EVENT from homeassistant.core import callback from homeassistant.setup import async_setup_component from tests.async_mock import call from tests.common import MockConfigEntry from tests.components.rfxtrx.conftest import create_rfx_test_cfg async def test_valid_config(hass): """Test configuration.""" assert await async_setup_component( hass, "rfxtrx", { "rfxtrx": { "device": "/dev/serial/by-id/usb" + "-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0", } }, ) async def test_valid_config2(hass): """Test configuration.""" assert await async_setup_component( hass, "rfxtrx", { "rfxtrx": { "device": "/dev/serial/by-id/usb" + "-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0", "debug": True, } }, ) async def test_invalid_config(hass): """Test configuration.""" assert not await async_setup_component(hass, "rfxtrx", {"rfxtrx": {}}) assert not await async_setup_component( hass, "rfxtrx", { "rfxtrx": { "device": "/dev/serial/by-id/usb" + "-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0", "invalid_key": True, } }, ) async def test_fire_event(hass, rfxtrx): """Test fire event.""" entry_data = create_rfx_test_cfg( device="/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0", automatic_add=True, devices={ "0b1100cd0213c7f210010f51": {"fire_event": True}, "0716000100900970": {"fire_event": True}, }, ) mock_entry = MockConfigEntry(domain="rfxtrx", unique_id=DOMAIN, data=entry_data) mock_entry.add_to_hass(hass) await hass.config_entries.async_setup(mock_entry.entry_id) await hass.async_block_till_done() await hass.async_start() calls = [] @callback def record_event(event): """Add recorded event to set.""" assert event.event_type == "rfxtrx_event" calls.append(event.data) hass.bus.async_listen(EVENT_RFXTRX_EVENT, record_event) await rfxtrx.signal("0b1100cd0213c7f210010f51") await rfxtrx.signal("0716000100900970") assert calls == [ { "packet_type": 17, "sub_type": 0, "type_string": "AC", "id_string": "213c7f2:16", "data": "0b1100cd0213c7f210010f51", "values": {"Command": "On", "Rssi numeric": 5}, }, { "packet_type": 22, "sub_type": 0, "type_string": "Byron SX", "id_string": "00:90", "data": "0716000100900970", "values": {"Command": "Chime", "Rssi numeric": 7, "Sound": 9}, }, ] async def test_send(hass, rfxtrx): """Test configuration.""" entry_data = create_rfx_test_cfg(device="/dev/null", devices={}) mock_entry = MockConfigEntry(domain="rfxtrx", unique_id=DOMAIN, data=entry_data) mock_entry.add_to_hass(hass) await hass.config_entries.async_setup(mock_entry.entry_id) await hass.async_block_till_done() await hass.services.async_call( "rfxtrx", "send", {"event": "0a520802060101ff0f0269"}, blocking=True ) assert rfxtrx.transport.send.mock_calls == [ call(bytearray(b"\x0a\x52\x08\x02\x06\x01\x01\xff\x0f\x02\x69")) ]