diff --git a/tests/components/deconz/test_switch.py b/tests/components/deconz/test_switch.py index 6aafac1bd42..cffdf07ae2b 100644 --- a/tests/components/deconz/test_switch.py +++ b/tests/components/deconz/test_switch.py @@ -1,8 +1,7 @@ """deCONZ switch platform tests.""" -from copy import deepcopy +from unittest.mock import patch -from homeassistant.components.deconz.gateway import get_gateway_from_config_entry from homeassistant.components.switch import ( DOMAIN as SWITCH_DOMAIN, SERVICE_TURN_OFF, @@ -16,54 +15,6 @@ from .test_gateway import ( setup_deconz_integration, ) -POWER_PLUGS = { - "1": { - "id": "On off switch id", - "name": "On off switch", - "type": "On/Off plug-in unit", - "state": {"on": True, "reachable": True}, - "uniqueid": "00:00:00:00:00:00:00:00-00", - }, - "2": { - "id": "Smart plug id", - "name": "Smart plug", - "type": "Smart plug", - "state": {"on": False, "reachable": True}, - "uniqueid": "00:00:00:00:00:00:00:01-00", - }, - "3": { - "id": "Unsupported switch id", - "name": "Unsupported switch", - "type": "Not a switch", - "state": {"reachable": True}, - "uniqueid": "00:00:00:00:00:00:00:03-00", - }, - "4": { - "id": "On off relay id", - "name": "On off relay", - "state": {"on": True, "reachable": True}, - "type": "On/Off light", - "uniqueid": "00:00:00:00:00:00:00:04-00", - }, -} - -SIRENS = { - "1": { - "id": "Warning device id", - "name": "Warning device", - "type": "Warning device", - "state": {"alert": "lselect", "reachable": True}, - "uniqueid": "00:00:00:00:00:00:00:00-00", - }, - "2": { - "id": "Unsupported switch id", - "name": "Unsupported switch", - "type": "Not a switch", - "state": {"reachable": True}, - "uniqueid": "00:00:00:00:00:00:00:01-00", - }, -} - async def test_no_switches(hass, aioclient_mock): """Test that no switch entities are created.""" @@ -71,14 +22,38 @@ async def test_no_switches(hass, aioclient_mock): assert len(hass.states.async_all()) == 0 -async def test_power_plugs(hass, aioclient_mock): +async def test_power_plugs(hass, aioclient_mock, mock_deconz_websocket): """Test that all supported switch entities are created.""" - data = deepcopy(DECONZ_WEB_REQUEST) - data["lights"] = deepcopy(POWER_PLUGS) - config_entry = await setup_deconz_integration( - hass, aioclient_mock, get_state_response=data - ) - gateway = get_gateway_from_config_entry(hass, config_entry) + data = { + "lights": { + "1": { + "name": "On off switch", + "type": "On/Off plug-in unit", + "state": {"on": True, "reachable": True}, + "uniqueid": "00:00:00:00:00:00:00:00-00", + }, + "2": { + "name": "Smart plug", + "type": "Smart plug", + "state": {"on": False, "reachable": True}, + "uniqueid": "00:00:00:00:00:00:00:01-00", + }, + "3": { + "name": "Unsupported switch", + "type": "Not a switch", + "state": {"reachable": True}, + "uniqueid": "00:00:00:00:00:00:00:03-00", + }, + "4": { + "name": "On off relay", + "state": {"on": True, "reachable": True}, + "type": "On/Off light", + "uniqueid": "00:00:00:00:00:00:00:04-00", + }, + } + } + with patch.dict(DECONZ_WEB_REQUEST, data): + config_entry = await setup_deconz_integration(hass, aioclient_mock) assert len(hass.states.async_all()) == 4 assert hass.states.get("switch.on_off_switch").state == STATE_ON @@ -86,14 +61,15 @@ async def test_power_plugs(hass, aioclient_mock): assert hass.states.get("switch.on_off_relay").state == STATE_ON assert hass.states.get("switch.unsupported_switch") is None - state_changed_event = { + event_changed_light = { "t": "event", "e": "changed", "r": "lights", "id": "1", "state": {"on": False}, } - gateway.api.event_handler(state_changed_event) + await mock_deconz_websocket(data=event_changed_light) + await hass.async_block_till_done() assert hass.states.get("switch.on_off_switch").state == STATE_OFF @@ -124,7 +100,7 @@ async def test_power_plugs(hass, aioclient_mock): await hass.config_entries.async_unload(config_entry.entry_id) states = hass.states.async_all() - assert len(hass.states.async_all()) == 4 + assert len(states) == 4 for state in states: assert state.state == STATE_UNAVAILABLE @@ -133,27 +109,40 @@ async def test_power_plugs(hass, aioclient_mock): assert len(hass.states.async_all()) == 0 -async def test_sirens(hass, aioclient_mock): +async def test_sirens(hass, aioclient_mock, mock_deconz_websocket): """Test that siren entities are created.""" - data = deepcopy(DECONZ_WEB_REQUEST) - data["lights"] = deepcopy(SIRENS) - config_entry = await setup_deconz_integration( - hass, aioclient_mock, get_state_response=data - ) - gateway = get_gateway_from_config_entry(hass, config_entry) + data = { + "lights": { + "1": { + "name": "Warning device", + "type": "Warning device", + "state": {"alert": "lselect", "reachable": True}, + "uniqueid": "00:00:00:00:00:00:00:00-00", + }, + "2": { + "name": "Unsupported switch", + "type": "Not a switch", + "state": {"reachable": True}, + "uniqueid": "00:00:00:00:00:00:00:01-00", + }, + } + } + with patch.dict(DECONZ_WEB_REQUEST, data): + config_entry = await setup_deconz_integration(hass, aioclient_mock) assert len(hass.states.async_all()) == 2 assert hass.states.get("switch.warning_device").state == STATE_ON - assert hass.states.get("switch.unsupported_switch") is None + assert not hass.states.get("switch.unsupported_switch") - state_changed_event = { + event_changed_light = { "t": "event", "e": "changed", "r": "lights", "id": "1", "state": {"alert": None}, } - gateway.api.event_handler(state_changed_event) + await mock_deconz_websocket(data=event_changed_light) + await hass.async_block_till_done() assert hass.states.get("switch.warning_device").state == STATE_OFF @@ -184,7 +173,7 @@ async def test_sirens(hass, aioclient_mock): await hass.config_entries.async_unload(config_entry.entry_id) states = hass.states.async_all() - assert len(hass.states.async_all()) == 2 + assert len(states) == 2 for state in states: assert state.state == STATE_UNAVAILABLE