Deduplicate more fixture data related to deCONZ websocket sensor (#122412)
parent
d3df903d1e
commit
c61efe931a
|
@ -269,6 +269,19 @@ def fixture_websocket_data(_mock_websocket: _WebsocketMock) -> WebsocketDataType
|
|||
return change_websocket_data
|
||||
|
||||
|
||||
@pytest.fixture(name="sensor_ws_data")
|
||||
def fixture_sensor_websocket_data(
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
) -> WebsocketDataType:
|
||||
"""Fixture to send sensor data over websocket."""
|
||||
|
||||
async def send_sensor_data(data: dict[str, Any]) -> None:
|
||||
"""Send sensor data on the websocket."""
|
||||
await mock_websocket_data({"r": "sensors"} | data)
|
||||
|
||||
return send_sensor_data
|
||||
|
||||
|
||||
@pytest.fixture(name="mock_websocket_state")
|
||||
def fixture_websocket_state(_mock_websocket: _WebsocketMock) -> WebsocketStateType:
|
||||
"""Fixture to set websocket state."""
|
||||
|
|
|
@ -102,7 +102,7 @@ async def test_alarm_control_panel(
|
|||
aioclient_mock: AiohttpClientMocker,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of alarm control panel entities."""
|
||||
assert len(hass.states.async_all()) == 4
|
||||
|
@ -110,22 +110,14 @@ async def test_alarm_control_panel(
|
|||
|
||||
# Event signals alarm control panel armed away
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.ARMED_AWAY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.ARMED_AWAY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_ARMED_AWAY
|
||||
|
||||
# Event signals alarm control panel armed night
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.ARMED_NIGHT},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.ARMED_NIGHT}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert (
|
||||
|
@ -134,22 +126,14 @@ async def test_alarm_control_panel(
|
|||
|
||||
# Event signals alarm control panel armed home
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.ARMED_STAY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.ARMED_STAY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_ARMED_HOME
|
||||
|
||||
# Event signals alarm control panel disarmed
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.DISARMED},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.DISARMED}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_DISARMED
|
||||
|
@ -161,11 +145,7 @@ async def test_alarm_control_panel(
|
|||
AncillaryControlPanel.ARMING_NIGHT,
|
||||
AncillaryControlPanel.ARMING_STAY,
|
||||
):
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": arming_event},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": arming_event}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_ARMING
|
||||
|
@ -176,11 +156,7 @@ async def test_alarm_control_panel(
|
|||
AncillaryControlPanel.ENTRY_DELAY,
|
||||
AncillaryControlPanel.EXIT_DELAY,
|
||||
):
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": pending_event},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": pending_event}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert (
|
||||
|
@ -189,22 +165,14 @@ async def test_alarm_control_panel(
|
|||
|
||||
# Event signals alarm control panel triggered
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.IN_ALARM},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.IN_ALARM}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_TRIGGERED
|
||||
|
||||
# Event signals alarm control panel unknown state keeps previous state
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.NOT_READY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.NOT_READY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("alarm_control_panel.keypad").state == STATE_ALARM_TRIGGERED
|
||||
|
|
|
@ -460,7 +460,7 @@ async def test_binary_sensors(
|
|||
device_registry: dr.DeviceRegistry,
|
||||
entity_registry: er.EntityRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
expected: dict[str, Any],
|
||||
) -> None:
|
||||
"""Test successful creation of binary sensor entities."""
|
||||
|
@ -492,8 +492,7 @@ async def test_binary_sensors(
|
|||
|
||||
# Change state
|
||||
|
||||
event_changed_sensor = {"r": "sensors", "state": expected["websocket_event"]}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": expected["websocket_event"]})
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get(expected["entity_id"]).state == expected["next_state"]
|
||||
|
||||
|
@ -595,14 +594,13 @@ async def test_allow_clip_sensor(hass: HomeAssistant, config_entry_setup) -> Non
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_add_new_binary_sensor(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that adding a new binary sensor works."""
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
event_added_sensor = {
|
||||
"e": "added",
|
||||
"r": "sensors",
|
||||
"sensor": {
|
||||
"id": "Presence sensor id",
|
||||
"name": "Presence sensor",
|
||||
|
@ -612,7 +610,7 @@ async def test_add_new_binary_sensor(
|
|||
"uniqueid": "00:00:00:00:00:00:00:00-00",
|
||||
},
|
||||
}
|
||||
await mock_websocket_data(event_added_sensor)
|
||||
await sensor_ws_data(event_added_sensor)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 1
|
||||
|
@ -628,7 +626,7 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_service_call(
|
|||
config_entry_setup: ConfigEntry,
|
||||
deconz_payload: dict[str, Any],
|
||||
mock_requests: Callable[[str], None],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that adding a new binary sensor is not allowed."""
|
||||
sensor = {
|
||||
|
@ -638,15 +636,10 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_service_call(
|
|||
"config": {"on": True, "reachable": True},
|
||||
"uniqueid": "00:00:00:00:00:00:00:00-00",
|
||||
}
|
||||
event_added_sensor = {
|
||||
"e": "added",
|
||||
"r": "sensors",
|
||||
"sensor": sensor,
|
||||
}
|
||||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
await mock_websocket_data(event_added_sensor)
|
||||
await sensor_ws_data({"e": "added", "sensor": sensor})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
@ -680,7 +673,7 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_options_change(
|
|||
config_entry_setup: ConfigEntry,
|
||||
deconz_payload: dict[str, Any],
|
||||
mock_requests: Callable[[str], None],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that adding a new binary sensor is not allowed."""
|
||||
sensor = {
|
||||
|
@ -690,15 +683,10 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_options_change(
|
|||
"config": {"on": True, "reachable": True},
|
||||
"uniqueid": "00:00:00:00:00:00:00:00-00",
|
||||
}
|
||||
event_added_sensor = {
|
||||
"e": "added",
|
||||
"r": "sensors",
|
||||
"sensor": sensor,
|
||||
}
|
||||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
await mock_websocket_data(event_added_sensor)
|
||||
await sensor_ws_data({"e": "added", "sensor": sensor})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
|
|
@ -89,7 +89,7 @@ from tests.test_util.aiohttp import AiohttpClientMocker
|
|||
async def test_simple_climate_device(
|
||||
hass: HomeAssistant,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of climate entities.
|
||||
|
||||
|
@ -110,11 +110,7 @@ async def test_simple_climate_device(
|
|||
|
||||
# Event signals thermostat configured off
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"on": False},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"on": False}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == STATE_OFF
|
||||
|
@ -125,11 +121,7 @@ async def test_simple_climate_device(
|
|||
|
||||
# Event signals thermostat state on
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"on": True},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"on": True}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == HVACMode.HEAT
|
||||
|
@ -195,7 +187,7 @@ async def test_climate_device_without_cooling_support(
|
|||
hass: HomeAssistant,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of sensor entities."""
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -219,11 +211,7 @@ async def test_climate_device_without_cooling_support(
|
|||
|
||||
# Event signals thermostat configured off
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"mode": "off"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"mode": "off"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == STATE_OFF
|
||||
|
@ -234,12 +222,7 @@ async def test_climate_device_without_cooling_support(
|
|||
|
||||
# Event signals thermostat state on
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"mode": "other"},
|
||||
"state": {"on": True},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"mode": "other"}, "state": {"on": True}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == HVACMode.HEAT
|
||||
|
@ -250,11 +233,7 @@ async def test_climate_device_without_cooling_support(
|
|||
|
||||
# Event signals thermostat state off
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"on": False},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"on": False}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == STATE_OFF
|
||||
|
@ -377,7 +356,7 @@ async def test_climate_device_without_cooling_support(
|
|||
async def test_climate_device_with_cooling_support(
|
||||
hass: HomeAssistant,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of sensor entities."""
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -398,11 +377,7 @@ async def test_climate_device_with_cooling_support(
|
|||
|
||||
# Event signals thermostat mode cool
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"mode": "cool"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"mode": "cool"}})
|
||||
await hass.async_block_till_done()
|
||||
await hass.async_block_till_done()
|
||||
|
||||
|
@ -414,11 +389,7 @@ async def test_climate_device_with_cooling_support(
|
|||
|
||||
# Event signals thermostat state on
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"on": True},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"on": True}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.zen_01").state == HVACMode.COOL
|
||||
|
@ -476,7 +447,7 @@ async def test_climate_device_with_cooling_support(
|
|||
async def test_climate_device_with_fan_support(
|
||||
hass: HomeAssistant,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of sensor entities."""
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -498,11 +469,7 @@ async def test_climate_device_with_fan_support(
|
|||
|
||||
# Event signals fan mode defaults to off
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"fanmode": "unsupported"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"fanmode": "unsupported"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.zen_01").attributes["fan_mode"] == FAN_OFF
|
||||
|
@ -512,12 +479,7 @@ async def test_climate_device_with_fan_support(
|
|||
|
||||
# Event signals unsupported fan mode
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"fanmode": "unsupported"},
|
||||
"state": {"on": True},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"fanmode": "unsupported"}, "state": {"on": True}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.zen_01").attributes["fan_mode"] == FAN_ON
|
||||
|
@ -528,11 +490,7 @@ async def test_climate_device_with_fan_support(
|
|||
|
||||
# Event signals unsupported fan mode
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"fanmode": "unsupported"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"fanmode": "unsupported"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.zen_01").attributes["fan_mode"] == FAN_ON
|
||||
|
@ -611,7 +569,7 @@ async def test_climate_device_with_fan_support(
|
|||
async def test_climate_device_with_preset(
|
||||
hass: HomeAssistant,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of sensor entities."""
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -636,11 +594,7 @@ async def test_climate_device_with_preset(
|
|||
|
||||
# Event signals deCONZ preset
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"preset": "manual"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"preset": "manual"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert (
|
||||
|
@ -650,11 +604,7 @@ async def test_climate_device_with_preset(
|
|||
|
||||
# Event signals unknown preset
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"preset": "unsupported"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"preset": "unsupported"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.zen_01").attributes["preset_mode"] is None
|
||||
|
@ -779,7 +729,7 @@ async def test_clip_climate_device(
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_verify_state_update(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that state update properly."""
|
||||
assert hass.states.get("climate.thermostat").state == HVACMode.AUTO
|
||||
|
@ -788,8 +738,7 @@ async def test_verify_state_update(
|
|||
== HVACAction.HEATING
|
||||
)
|
||||
|
||||
event_changed_sensor = {"r": "sensors", "state": {"on": False}}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"on": False}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("climate.thermostat").state == HVACMode.AUTO
|
||||
|
@ -802,12 +751,11 @@ async def test_verify_state_update(
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_add_new_climate_device(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that adding a new climate device works."""
|
||||
event_added_sensor = {
|
||||
"e": "added",
|
||||
"r": "sensors",
|
||||
"sensor": {
|
||||
"id": "Thermostat id",
|
||||
"name": "Thermostat",
|
||||
|
@ -826,7 +774,7 @@ async def test_add_new_climate_device(
|
|||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
await mock_websocket_data(event_added_sensor)
|
||||
await sensor_ws_data(event_added_sensor)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -934,7 +882,7 @@ async def test_no_mode_no_state(hass: HomeAssistant) -> None:
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_boost_mode(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that a climate device with boost mode and different state works."""
|
||||
|
||||
|
@ -948,13 +896,8 @@ async def test_boost_mode(
|
|||
assert climate_thermostat.attributes["hvac_action"] is HVACAction.IDLE
|
||||
|
||||
# Event signals thermostat preset boost and valve 100 (real data)
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"config": {"preset": "boost"},
|
||||
"state": {"valve": 100},
|
||||
}
|
||||
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"config": {"preset": "boost"}, "state": {"valve": 100}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
climate_thermostat = hass.states.get("climate.thermostat")
|
||||
|
|
|
@ -79,7 +79,7 @@ async def test_deconz_events(
|
|||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of deconz events."""
|
||||
assert len(hass.states.async_all()) == 3
|
||||
|
@ -98,12 +98,7 @@ async def test_deconz_events(
|
|||
|
||||
captured_events = async_capture_events(hass, CONF_DECONZ_EVENT)
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"id": "1",
|
||||
"state": {"buttonevent": 2000},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "1", "state": {"buttonevent": 2000}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -118,12 +113,7 @@ async def test_deconz_events(
|
|||
"device_id": device.id,
|
||||
}
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"id": "3",
|
||||
"state": {"buttonevent": 2000},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "3", "state": {"buttonevent": 2000}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -139,12 +129,7 @@ async def test_deconz_events(
|
|||
"device_id": device.id,
|
||||
}
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"id": "4",
|
||||
"state": {"gesture": 0},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "4", "state": {"gesture": 0}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -161,11 +146,10 @@ async def test_deconz_events(
|
|||
}
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"id": "5",
|
||||
"state": {"buttonevent": 6002, "angle": 110, "xy": [0.5982, 0.3897]},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data(event_changed_sensor)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -184,12 +168,7 @@ async def test_deconz_events(
|
|||
|
||||
# Unsupported event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"id": "1",
|
||||
"name": "other name",
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "1", "name": "other name"})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 4
|
||||
|
@ -274,7 +253,7 @@ async def test_deconz_alarm_events(
|
|||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of deconz alarm events."""
|
||||
assert len(hass.states.async_all()) == 4
|
||||
|
@ -292,11 +271,7 @@ async def test_deconz_alarm_events(
|
|||
|
||||
# Emergency event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"action": AncillaryControlAction.EMERGENCY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"action": AncillaryControlAction.EMERGENCY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -313,11 +288,7 @@ async def test_deconz_alarm_events(
|
|||
|
||||
# Fire event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"action": AncillaryControlAction.FIRE},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"action": AncillaryControlAction.FIRE}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -334,11 +305,7 @@ async def test_deconz_alarm_events(
|
|||
|
||||
# Invalid code event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"action": AncillaryControlAction.INVALID_CODE},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"action": AncillaryControlAction.INVALID_CODE}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -355,11 +322,7 @@ async def test_deconz_alarm_events(
|
|||
|
||||
# Panic event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"action": AncillaryControlAction.PANIC},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"action": AncillaryControlAction.PANIC}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -376,22 +339,14 @@ async def test_deconz_alarm_events(
|
|||
|
||||
# Only care for changes to specific action events
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"action": AncillaryControlAction.ARMED_AWAY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"action": AncillaryControlAction.ARMED_AWAY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 4
|
||||
|
||||
# Only care for action events
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"panel": AncillaryControlPanel.ARMED_AWAY},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"panel": AncillaryControlPanel.ARMED_AWAY}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 4
|
||||
|
@ -440,7 +395,7 @@ async def test_deconz_presence_events(
|
|||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of deconz presence events."""
|
||||
assert len(hass.states.async_all()) == 5
|
||||
|
@ -469,11 +424,7 @@ async def test_deconz_presence_events(
|
|||
PresenceStatePresenceEvent.LEFT_LEAVE,
|
||||
PresenceStatePresenceEvent.RIGHT_LEAVE,
|
||||
):
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"presenceevent": presence_event},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"presenceevent": presence_event}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 1
|
||||
|
@ -487,11 +438,7 @@ async def test_deconz_presence_events(
|
|||
|
||||
# Unsupported presence event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"presenceevent": PresenceStatePresenceEvent.NINE},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"presenceevent": PresenceStatePresenceEvent.NINE}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 0
|
||||
|
@ -539,7 +486,7 @@ async def test_deconz_relative_rotary_events(
|
|||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test successful creation of deconz relative rotary events."""
|
||||
assert len(hass.states.async_all()) == 1
|
||||
|
@ -560,14 +507,13 @@ async def test_deconz_relative_rotary_events(
|
|||
|
||||
for rotary_event, duration, rotation in ((1, 100, 50), (2, 200, -50)):
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {
|
||||
"rotaryevent": rotary_event,
|
||||
"expectedeventduration": duration,
|
||||
"expectedrotation": rotation,
|
||||
},
|
||||
}
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data(event_changed_sensor)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 1
|
||||
|
@ -583,11 +529,7 @@ async def test_deconz_relative_rotary_events(
|
|||
|
||||
# Unsupported relative rotary event
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"name": "123",
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"name": "123"})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(captured_events) == 0
|
||||
|
|
|
@ -312,7 +312,7 @@ async def test_functional_device_trigger(
|
|||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
service_calls: list[ServiceCall],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test proper matching and attachment of device trigger automation."""
|
||||
device = device_registry.async_get_device(
|
||||
|
@ -343,11 +343,7 @@ async def test_functional_device_trigger(
|
|||
|
||||
assert len(hass.states.async_entity_ids(AUTOMATION_DOMAIN)) == 1
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"buttonevent": 1002},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"buttonevent": 1002}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(service_calls) == 1
|
||||
|
|
|
@ -122,17 +122,13 @@ async def test_lock_from_sensor(
|
|||
hass: HomeAssistant,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that all supported lock entities based on sensors are created."""
|
||||
assert len(hass.states.async_all()) == 2
|
||||
assert hass.states.get("lock.door_lock").state == STATE_UNLOCKED
|
||||
|
||||
event_changed_sensor = {
|
||||
"r": "sensors",
|
||||
"state": {"lockstate": "locked"},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"state": {"lockstate": "locked"}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("lock.door_lock").state == STATE_LOCKED
|
||||
|
|
|
@ -102,7 +102,7 @@ async def test_number_entities(
|
|||
device_registry: dr.DeviceRegistry,
|
||||
entity_registry: er.EntityRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
mock_put_request: Callable[[str, str], AiohttpClientMocker],
|
||||
expected: dict[str, Any],
|
||||
) -> None:
|
||||
|
@ -134,8 +134,7 @@ async def test_number_entities(
|
|||
|
||||
# Change state
|
||||
|
||||
event_changed_sensor = {"r": "sensors"} | expected["websocket_event"]
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data(expected["websocket_event"])
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get(expected["entity_id"]).state == expected["next_state"]
|
||||
|
||||
|
|
|
@ -906,7 +906,7 @@ async def test_sensors(
|
|||
device_registry: dr.DeviceRegistry,
|
||||
entity_registry: er.EntityRegistry,
|
||||
config_entry_setup: ConfigEntry,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
expected: dict[str, Any],
|
||||
) -> None:
|
||||
"""Test successful creation of sensor entities."""
|
||||
|
@ -952,9 +952,7 @@ async def test_sensors(
|
|||
|
||||
# Change state
|
||||
|
||||
event_changed_sensor = {"r": "sensors"}
|
||||
event_changed_sensor |= expected["websocket_event"]
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data(expected["websocket_event"])
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get(expected["entity_id"]).state == expected["next_state"]
|
||||
|
||||
|
@ -1057,12 +1055,11 @@ async def test_allow_clip_sensors(
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_add_new_sensor(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that adding a new sensor works."""
|
||||
event_added_sensor = {
|
||||
"e": "added",
|
||||
"r": "sensors",
|
||||
"sensor": {
|
||||
"id": "Light sensor id",
|
||||
"name": "Light level sensor",
|
||||
|
@ -1075,7 +1072,7 @@ async def test_add_new_sensor(
|
|||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
await mock_websocket_data(event_added_sensor)
|
||||
await sensor_ws_data(event_added_sensor)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 2
|
||||
|
@ -1165,7 +1162,7 @@ async def test_air_quality_sensor_without_ppb(hass: HomeAssistant) -> None:
|
|||
@pytest.mark.usefixtures("config_entry_setup")
|
||||
async def test_add_battery_later(
|
||||
hass: HomeAssistant,
|
||||
mock_websocket_data: WebsocketDataType,
|
||||
sensor_ws_data: WebsocketDataType,
|
||||
) -> None:
|
||||
"""Test that a battery sensor can be created later on.
|
||||
|
||||
|
@ -1174,24 +1171,12 @@ async def test_add_battery_later(
|
|||
"""
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
event_changed_sensor = {
|
||||
"e": "changed",
|
||||
"r": "sensors",
|
||||
"id": "2",
|
||||
"config": {"battery": 50},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "2", "config": {"battery": 50}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 0
|
||||
|
||||
event_changed_sensor = {
|
||||
"e": "changed",
|
||||
"r": "sensors",
|
||||
"id": "1",
|
||||
"config": {"battery": 50},
|
||||
}
|
||||
await mock_websocket_data(event_changed_sensor)
|
||||
await sensor_ws_data({"id": "1", "config": {"battery": 50}})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 1
|
||||
|
|
Loading…
Reference in New Issue