Improve fixture usage for sensor based deCONZ tests (#122297)

This commit is contained in:
Robert Svensson 2024-07-21 13:56:16 +02:00 committed by GitHub
parent 87e377cf84
commit 48661054d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 530 additions and 619 deletions

View file

@ -122,6 +122,8 @@ def fixture_get_request(
if "state" in light_payload: if "state" in light_payload:
light_payload = {"0": light_payload} light_payload = {"0": light_payload}
data.setdefault("lights", light_payload) data.setdefault("lights", light_payload)
if "state" in sensor_payload or "config" in sensor_payload:
sensor_payload = {"0": sensor_payload}
data.setdefault("sensors", sensor_payload) data.setdefault("sensors", sensor_payload)
def __mock_requests(host: str = "") -> None: def __mock_requests(host: str = "") -> None:
@ -185,16 +187,13 @@ def fixture_light_data() -> dict[str, Any]:
@pytest.fixture(name="sensor_payload") @pytest.fixture(name="sensor_payload")
def fixture_sensor_data(sensor_1_payload: dict[str, Any]) -> dict[str, Any]: def fixture_sensor_data() -> dict[str, Any]:
"""Sensor data.""" """Sensor data.
if sensor_1_payload:
return {"1": sensor_1_payload}
return {}
Should be
@pytest.fixture(name="sensor_1_payload") - one sensor data payload {"config": ..., "state": ...} ("0")
def fixture_sensor_1_data() -> dict[str, Any]: - multiple sensors {"1": ..., "2": ...}
"""Sensor 1 data.""" """
return {} return {}

View file

@ -70,32 +70,30 @@ from tests.test_util.aiohttp import AiohttpClientMocker
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 95,
"battery": 95, "enrolled": 1,
"enrolled": 1, "on": True,
"on": True, "pending": [],
"pending": [], "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "5aaa1c6bae8501f59929539c6e8f44d6",
"etag": "5aaa1c6bae8501f59929539c6e8f44d6", "lastseen": "2021-07-25T18:07Z",
"lastseen": "2021-07-25T18:07Z", "manufacturername": "lk",
"manufacturername": "lk", "modelid": "ZB-KeypadGeneric-D0002",
"modelid": "ZB-KeypadGeneric-D0002", "name": "Keypad",
"name": "Keypad", "state": {
"state": { "action": "armed_stay",
"action": "armed_stay", "lastupdated": "2021-07-25T18:02:51.172",
"lastupdated": "2021-07-25T18:02:51.172", "lowbattery": False,
"lowbattery": False, "panel": "none",
"panel": "none", "seconds_remaining": 55,
"seconds_remaining": 55, "tampered": False,
"tampered": False, },
}, "swversion": "3.13",
"swversion": "3.13", "type": "ZHAAncillaryControl",
"type": "ZHAAncillaryControl", "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )

View file

@ -454,7 +454,7 @@ TEST_DATA = [
@pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: True}]) @pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: True}])
@pytest.mark.parametrize(("sensor_1_payload", "expected"), TEST_DATA) @pytest.mark.parametrize(("sensor_payload", "expected"), TEST_DATA)
async def test_binary_sensors( async def test_binary_sensors(
hass: HomeAssistant, hass: HomeAssistant,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
@ -492,11 +492,7 @@ async def test_binary_sensors(
# Change state # Change state
event_changed_sensor = { event_changed_sensor = {"r": "sensors", "state": expected["websocket_event"]}
"r": "sensors",
"id": "1",
"state": expected["websocket_event"],
}
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
await hass.async_block_till_done() await hass.async_block_till_done()
assert hass.states.get(expected["entity_id"]).state == expected["next_state"] assert hass.states.get(expected["entity_id"]).state == expected["next_state"]
@ -514,7 +510,7 @@ async def test_binary_sensors(
@pytest.mark.parametrize( @pytest.mark.parametrize(
"sensor_1_payload", "sensor_payload",
[ [
{ {
"name": "CLIP presence sensor", "name": "CLIP presence sensor",
@ -607,7 +603,6 @@ async def test_add_new_binary_sensor(
event_added_sensor = { event_added_sensor = {
"e": "added", "e": "added",
"r": "sensors", "r": "sensors",
"id": "1",
"sensor": { "sensor": {
"id": "Presence sensor id", "id": "Presence sensor id",
"name": "Presence sensor", "name": "Presence sensor",
@ -646,7 +641,6 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_service_call(
event_added_sensor = { event_added_sensor = {
"e": "added", "e": "added",
"r": "sensors", "r": "sensors",
"id": "1",
"sensor": sensor, "sensor": sensor,
} }
@ -667,7 +661,7 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_service_call(
== 0 == 0
) )
deconz_payload["sensors"] = {"1": sensor} deconz_payload["sensors"]["0"] = sensor
mock_requests() mock_requests()
await hass.services.async_call(DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH) await hass.services.async_call(DECONZ_DOMAIN, SERVICE_DEVICE_REFRESH)
@ -699,7 +693,6 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_options_change(
event_added_sensor = { event_added_sensor = {
"e": "added", "e": "added",
"r": "sensors", "r": "sensors",
"id": "1",
"sensor": sensor, "sensor": sensor,
} }
@ -720,7 +713,7 @@ async def test_add_new_binary_sensor_ignored_load_entities_on_options_change(
== 0 == 0
) )
deconz_payload["sensors"] = {"1": sensor} deconz_payload["sensors"]["0"] = sensor
mock_requests() mock_requests()
hass.config_entries.async_update_entry( hass.config_entries.async_update_entry(

View file

@ -54,36 +54,34 @@ from tests.test_util.aiohttp import AiohttpClientMocker
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 59,
"battery": 59, "displayflipped": None,
"displayflipped": None, "heatsetpoint": 2100,
"heatsetpoint": 2100, "locked": True,
"locked": True, "mountingmode": None,
"mountingmode": None, "offset": 0,
"offset": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "6130553ac247174809bae47144ee23f8",
"etag": "6130553ac247174809bae47144ee23f8", "lastseen": "2020-11-29T19:31Z",
"lastseen": "2020-11-29T19:31Z", "manufacturername": "Danfoss",
"manufacturername": "Danfoss", "modelid": "eTRV0100",
"modelid": "eTRV0100", "name": "thermostat",
"name": "thermostat", "state": {
"state": { "errorcode": None,
"errorcode": None, "lastupdated": "2020-11-29T19:28:40.665",
"lastupdated": "2020-11-29T19:28:40.665", "mountingmodeactive": False,
"mountingmodeactive": False, "on": True,
"on": True, "temperature": 2102,
"temperature": 2102, "valve": 24,
"valve": 24, "windowopen": "Closed",
"windowopen": "Closed", },
}, "swversion": "01.02.0008 01.02",
"swversion": "01.02.0008 01.02", "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "14:b4:57:ff:fe:d5:4e:77-01-0201",
"uniqueid": "14:b4:57:ff:fe:d5:4e:77-01-0201",
}
} }
], ],
) )
@ -179,19 +177,17 @@ async def test_simple_climate_device(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "Thermostat",
"name": "Thermostat", "type": "ZHAThermostat",
"type": "ZHAThermostat", "state": {"on": True, "temperature": 2260, "valve": 30},
"state": {"on": True, "temperature": 2260, "valve": 30}, "config": {
"config": { "battery": 100,
"battery": 100, "heatsetpoint": 2200,
"heatsetpoint": 2200, "mode": "auto",
"mode": "auto", "offset": 10,
"offset": 10, "reachable": True,
"reachable": True, },
}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )
@ -225,7 +221,6 @@ async def test_climate_device_without_cooling_support(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"config": {"mode": "off"}, "config": {"mode": "off"},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -241,7 +236,6 @@ async def test_climate_device_without_cooling_support(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"config": {"mode": "other"}, "config": {"mode": "other"},
"state": {"on": True}, "state": {"on": True},
} }
@ -258,7 +252,6 @@ async def test_climate_device_without_cooling_support(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"on": False}, "state": {"on": False},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -272,7 +265,7 @@ async def test_climate_device_without_cooling_support(
# Verify service calls # Verify service calls
aioclient_mock = mock_put_request("/sensors/1/config") aioclient_mock = mock_put_request("/sensors/0/config")
# Service set HVAC mode to auto # Service set HVAC mode to auto
@ -354,31 +347,29 @@ async def test_climate_device_without_cooling_support(
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 25,
"battery": 25, "coolsetpoint": 1111,
"coolsetpoint": 1111, "fanmode": None,
"fanmode": None, "heatsetpoint": 2222,
"heatsetpoint": 2222, "mode": "heat",
"mode": "heat", "offset": 0,
"offset": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "074549903686a77a12ef0f06c499b1ef",
"etag": "074549903686a77a12ef0f06c499b1ef", "lastseen": "2020-11-27T13:45Z",
"lastseen": "2020-11-27T13:45Z", "manufacturername": "Zen Within",
"manufacturername": "Zen Within", "modelid": "Zen-01",
"modelid": "Zen-01", "name": "Zen-01",
"name": "Zen-01", "state": {
"state": { "lastupdated": "2020-11-27T13:42:40.863",
"lastupdated": "2020-11-27T13:42:40.863", "on": False,
"on": False, "temperature": 2320,
"temperature": 2320, },
}, "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
"uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
}
} }
], ],
) )
@ -455,31 +446,29 @@ async def test_climate_device_with_cooling_support(
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 25,
"battery": 25, "coolsetpoint": None,
"coolsetpoint": None, "fanmode": "auto",
"fanmode": "auto", "heatsetpoint": 2222,
"heatsetpoint": 2222, "mode": "heat",
"mode": "heat", "offset": 0,
"offset": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "074549903686a77a12ef0f06c499b1ef",
"etag": "074549903686a77a12ef0f06c499b1ef", "lastseen": "2020-11-27T13:45Z",
"lastseen": "2020-11-27T13:45Z", "manufacturername": "Zen Within",
"manufacturername": "Zen Within", "modelid": "Zen-01",
"modelid": "Zen-01", "name": "Zen-01",
"name": "Zen-01", "state": {
"state": { "lastupdated": "2020-11-27T13:42:40.863",
"lastupdated": "2020-11-27T13:42:40.863", "on": False,
"on": False, "temperature": 2320,
"temperature": 2320, },
}, "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
"uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
}
} }
], ],
) )
@ -591,32 +580,30 @@ async def test_climate_device_with_fan_support(
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 25,
"battery": 25, "coolsetpoint": None,
"coolsetpoint": None, "fanmode": None,
"fanmode": None, "heatsetpoint": 2222,
"heatsetpoint": 2222, "mode": "heat",
"mode": "heat", "preset": "auto",
"preset": "auto", "offset": 0,
"offset": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "074549903686a77a12ef0f06c499b1ef",
"etag": "074549903686a77a12ef0f06c499b1ef", "lastseen": "2020-11-27T13:45Z",
"lastseen": "2020-11-27T13:45Z", "manufacturername": "Zen Within",
"manufacturername": "Zen Within", "modelid": "Zen-01",
"modelid": "Zen-01", "name": "Zen-01",
"name": "Zen-01", "state": {
"state": { "lastupdated": "2020-11-27T13:42:40.863",
"lastupdated": "2020-11-27T13:42:40.863", "on": False,
"on": False, "temperature": 2320,
"temperature": 2320, },
}, "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
"uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
}
} }
], ],
) )
@ -775,19 +762,17 @@ async def test_clip_climate_device(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "Thermostat",
"name": "Thermostat", "type": "ZHAThermostat",
"type": "ZHAThermostat", "state": {"on": True, "temperature": 2260, "valve": 30},
"state": {"on": True, "temperature": 2260, "valve": 30}, "config": {
"config": { "battery": 100,
"battery": 100, "heatsetpoint": 2200,
"heatsetpoint": 2200, "mode": "auto",
"mode": "auto", "offset": 10,
"offset": 10, "reachable": True,
"reachable": True, },
}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )
@ -803,11 +788,7 @@ async def test_verify_state_update(
== HVACAction.HEATING == HVACAction.HEATING
) )
event_changed_sensor = { event_changed_sensor = {"r": "sensors", "state": {"on": False}}
"r": "sensors",
"id": "1",
"state": {"on": False},
}
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -827,7 +808,6 @@ async def test_add_new_climate_device(
event_added_sensor = { event_added_sensor = {
"e": "added", "e": "added",
"r": "sensors", "r": "sensors",
"id": "1",
"sensor": { "sensor": {
"id": "Thermostat id", "id": "Thermostat id",
"name": "Thermostat", "name": "Thermostat",
@ -862,14 +842,12 @@ async def test_add_new_climate_device(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "CLIP thermostat sensor",
"name": "CLIP thermostat sensor", "type": "CLIPThermostat",
"type": "CLIPThermostat", "state": {},
"state": {}, "config": {},
"config": {}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00", },
},
}
], ],
) )
@pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: False}]) @pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: False}])
@ -883,26 +861,24 @@ async def test_not_allow_clip_thermostat(hass: HomeAssistant) -> None:
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 25,
"battery": 25, "heatsetpoint": 2222,
"heatsetpoint": 2222, "mode": None,
"mode": None, "preset": "auto",
"preset": "auto", "offset": 0,
"offset": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "074549903686a77a12ef0f06c499b1ef",
"etag": "074549903686a77a12ef0f06c499b1ef", "lastseen": "2020-11-27T13:45Z",
"lastseen": "2020-11-27T13:45Z", "manufacturername": "Zen Within",
"manufacturername": "Zen Within", "modelid": "Zen-01",
"modelid": "Zen-01", "name": "Zen-01",
"name": "Zen-01", "state": {"lastupdated": "none", "on": None, "temperature": 2290},
"state": {"lastupdated": "none", "on": None, "temperature": 2290}, "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
"uniqueid": "00:24:46:00:00:11:6f:56-01-0201",
}
} }
], ],
) )
@ -922,38 +898,36 @@ async def test_no_mode_no_state(hass: HomeAssistant) -> None:
"sensor_payload", "sensor_payload",
[ [
{ {
"0": { "config": {
"config": { "battery": 58,
"battery": 58, "heatsetpoint": 2200,
"heatsetpoint": 2200, "locked": False,
"locked": False, "mode": "heat",
"mode": "heat", "offset": -200,
"offset": -200, "on": True,
"on": True, "preset": "manual",
"preset": "manual", "reachable": True,
"reachable": True, "schedule": {},
"schedule": {}, "schedule_on": False,
"schedule_on": False, "setvalve": False,
"setvalve": False, "windowopen_set": False,
"windowopen_set": False, },
}, "ep": 1,
"ep": 1, "etag": "404c15db68c318ebe7832ce5aa3d1e30",
"etag": "404c15db68c318ebe7832ce5aa3d1e30", "lastannounced": "2022-08-31T03:00:59Z",
"lastannounced": "2022-08-31T03:00:59Z", "lastseen": "2022-09-19T11:58Z",
"lastseen": "2022-09-19T11:58Z", "manufacturername": "_TZE200_b6wax7g0",
"manufacturername": "_TZE200_b6wax7g0", "modelid": "TS0601",
"modelid": "TS0601", "name": "Thermostat",
"name": "Thermostat", "state": {
"state": { "lastupdated": "2022-09-19T11:58:24.204",
"lastupdated": "2022-09-19T11:58:24.204", "lowbattery": False,
"lowbattery": False, "on": False,
"on": False, "temperature": 2200,
"temperature": 2200, "valve": 0,
"valve": 0, },
}, "type": "ZHAThermostat",
"type": "ZHAThermostat", "uniqueid": "84:fd:27:ff:fe:8a:eb:89-01-0201",
"uniqueid": "84:fd:27:ff:fe:8a:eb:89-01-0201",
}
} }
], ],
) )

View file

@ -243,32 +243,30 @@ async def test_deconz_events(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "battery": 95,
"battery": 95, "enrolled": 1,
"enrolled": 1, "on": True,
"on": True, "pending": [],
"pending": [], "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "5aaa1c6bae8501f59929539c6e8f44d6",
"etag": "5aaa1c6bae8501f59929539c6e8f44d6", "lastseen": "2021-07-25T18:07Z",
"lastseen": "2021-07-25T18:07Z", "manufacturername": "lk",
"manufacturername": "lk", "modelid": "ZB-KeypadGeneric-D0002",
"modelid": "ZB-KeypadGeneric-D0002", "name": "Keypad",
"name": "Keypad", "state": {
"state": { "action": "invalid_code",
"action": "invalid_code", "lastupdated": "2021-07-25T18:02:51.172",
"lastupdated": "2021-07-25T18:02:51.172", "lowbattery": False,
"lowbattery": False, "panel": "exit_delay",
"panel": "exit_delay", "seconds_remaining": 55,
"seconds_remaining": 55, "tampered": False,
"tampered": False, },
}, "swversion": "3.13",
"swversion": "3.13", "type": "ZHAAncillaryControl",
"type": "ZHAAncillaryControl", "uniqueid": "00:00:00:00:00:00:00:01-00",
"uniqueid": "00:00:00:00:00:00:00:01-00",
}
} }
], ],
) )
@ -296,7 +294,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"action": AncillaryControlAction.EMERGENCY}, "state": {"action": AncillaryControlAction.EMERGENCY},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -318,7 +315,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"action": AncillaryControlAction.FIRE}, "state": {"action": AncillaryControlAction.FIRE},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -340,7 +336,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"action": AncillaryControlAction.INVALID_CODE}, "state": {"action": AncillaryControlAction.INVALID_CODE},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -362,7 +357,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"action": AncillaryControlAction.PANIC}, "state": {"action": AncillaryControlAction.PANIC},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -384,7 +378,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"action": AncillaryControlAction.ARMED_AWAY}, "state": {"action": AncillaryControlAction.ARMED_AWAY},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -396,7 +389,6 @@ async def test_deconz_alarm_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"panel": AncillaryControlPanel.ARMED_AWAY}, "state": {"panel": AncillaryControlPanel.ARMED_AWAY},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -420,29 +412,27 @@ async def test_deconz_alarm_events(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "devicemode": "undirected",
"devicemode": "undirected", "on": True,
"on": True, "reachable": True,
"reachable": True, "sensitivity": 3,
"sensitivity": 3, "triggerdistance": "medium",
"triggerdistance": "medium", },
}, "etag": "13ff209f9401b317987d42506dd4cd79",
"etag": "13ff209f9401b317987d42506dd4cd79", "lastannounced": None,
"lastannounced": None, "lastseen": "2022-06-28T23:13Z",
"lastseen": "2022-06-28T23:13Z", "manufacturername": "aqara",
"manufacturername": "aqara", "modelid": "lumi.motion.ac01",
"modelid": "lumi.motion.ac01", "name": "Aqara FP1",
"name": "Aqara FP1", "state": {
"state": { "lastupdated": "2022-06-28T23:13:38.577",
"lastupdated": "2022-06-28T23:13:38.577", "presence": True,
"presence": True, "presenceevent": "leave",
"presenceevent": "leave", },
}, "swversion": "20210121",
"swversion": "20210121", "type": "ZHAPresence",
"type": "ZHAPresence", "uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
}
} }
], ],
) )
@ -481,7 +471,6 @@ async def test_deconz_presence_events(
): ):
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"presenceevent": presence_event}, "state": {"presenceevent": presence_event},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -500,7 +489,6 @@ async def test_deconz_presence_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"presenceevent": PresenceStatePresenceEvent.NINE}, "state": {"presenceevent": PresenceStatePresenceEvent.NINE},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -524,28 +512,26 @@ async def test_deconz_presence_events(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "battery": 100,
"battery": 100, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "etag": "463728970bdb7d04048fc4373654f45a",
"etag": "463728970bdb7d04048fc4373654f45a", "lastannounced": "2022-07-03T13:57:59Z",
"lastannounced": "2022-07-03T13:57:59Z", "lastseen": "2022-07-03T14:02Z",
"lastseen": "2022-07-03T14:02Z", "manufacturername": "Signify Netherlands B.V.",
"manufacturername": "Signify Netherlands B.V.", "modelid": "RDM002",
"modelid": "RDM002", "name": "RDM002 44",
"name": "RDM002 44", "state": {
"state": { "expectedeventduration": 400,
"expectedeventduration": 400, "expectedrotation": 75,
"expectedrotation": 75, "lastupdated": "2022-07-03T11:37:49.586",
"lastupdated": "2022-07-03T11:37:49.586", "rotaryevent": 2,
"rotaryevent": 2, },
}, "swversion": "2.59.19",
"swversion": "2.59.19", "type": "ZHARelativeRotary",
"type": "ZHARelativeRotary", "uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-14-fc00",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-14-fc00",
}
} }
], ],
) )
@ -575,7 +561,6 @@ async def test_deconz_relative_rotary_events(
for rotary_event, duration, rotation in ((1, 100, 50), (2, 200, -50)): for rotary_event, duration, rotation in ((1, 100, 50), (2, 200, -50)):
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": { "state": {
"rotaryevent": rotary_event, "rotaryevent": rotary_event,
"expectedeventduration": duration, "expectedeventduration": duration,
@ -600,7 +585,6 @@ async def test_deconz_relative_rotary_events(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"name": "123", "name": "123",
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)

View file

@ -47,25 +47,23 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "alert": "none",
"alert": "none", "battery": 60,
"battery": 60, "group": "10",
"group": "10", "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "1b355c0b6d2af28febd7ca9165881952",
"etag": "1b355c0b6d2af28febd7ca9165881952", "manufacturername": "IKEA of Sweden",
"manufacturername": "IKEA of Sweden", "mode": 1,
"mode": 1, "modelid": "TRADFRI on/off switch",
"modelid": "TRADFRI on/off switch", "name": "TRÅDFRI on/off switch ",
"name": "TRÅDFRI on/off switch ", "state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"},
"state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"}, "swversion": "1.4.018",
"swversion": "1.4.018", "type": "ZHASwitch",
"type": "ZHASwitch", "uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
"uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
}
} }
], ],
) )
@ -153,32 +151,30 @@ async def test_get_triggers(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "battery": 95,
"battery": 95, "enrolled": 1,
"enrolled": 1, "on": True,
"on": True, "pending": [],
"pending": [], "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "5aaa1c6bae8501f59929539c6e8f44d6",
"etag": "5aaa1c6bae8501f59929539c6e8f44d6", "lastseen": "2021-07-25T18:07Z",
"lastseen": "2021-07-25T18:07Z", "manufacturername": "lk",
"manufacturername": "lk", "modelid": "ZB-KeypadGeneric-D0002",
"modelid": "ZB-KeypadGeneric-D0002", "name": "Keypad",
"name": "Keypad", "state": {
"state": { "action": "armed_stay",
"action": "armed_stay", "lastupdated": "2021-07-25T18:02:51.172",
"lastupdated": "2021-07-25T18:02:51.172", "lowbattery": False,
"lowbattery": False, "panel": "exit_delay",
"panel": "exit_delay", "seconds_remaining": 55,
"seconds_remaining": 55, "tampered": False,
"tampered": False, },
}, "swversion": "3.13",
"swversion": "3.13", "type": "ZHAAncillaryControl",
"type": "ZHAAncillaryControl", "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )
@ -250,24 +246,22 @@ async def test_get_triggers_for_alarm_event(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "alert": "none",
"alert": "none", "group": "10",
"group": "10", "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "1b355c0b6d2af28febd7ca9165881952",
"etag": "1b355c0b6d2af28febd7ca9165881952", "manufacturername": "IKEA of Sweden",
"manufacturername": "IKEA of Sweden", "mode": 1,
"mode": 1, "modelid": "Unsupported model",
"modelid": "Unsupported model", "name": "TRÅDFRI on/off switch ",
"name": "TRÅDFRI on/off switch ", "state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"},
"state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"}, "swversion": "1.4.018",
"swversion": "1.4.018", "type": "ZHASwitch",
"type": "ZHASwitch", "uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
"uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
}
} }
], ],
) )
@ -293,25 +287,23 @@ async def test_get_triggers_manage_unsupported_remotes(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "alert": "none",
"alert": "none", "battery": 60,
"battery": 60, "group": "10",
"group": "10", "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "1b355c0b6d2af28febd7ca9165881952",
"etag": "1b355c0b6d2af28febd7ca9165881952", "manufacturername": "IKEA of Sweden",
"manufacturername": "IKEA of Sweden", "mode": 1,
"mode": 1, "modelid": "TRADFRI on/off switch",
"modelid": "TRADFRI on/off switch", "name": "TRÅDFRI on/off switch ",
"name": "TRÅDFRI on/off switch ", "state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"},
"state": {"buttonevent": 2002, "lastupdated": "2019-09-07T07:39:39"}, "swversion": "1.4.018",
"swversion": "1.4.018", "type": "ZHASwitch",
"type": "ZHASwitch", "uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
"uniqueid": "d0:cf:5e:ff:fe:71:a4:3a-01-1000",
}
} }
], ],
) )
@ -353,7 +345,6 @@ async def test_functional_device_trigger(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"buttonevent": 1002}, "state": {"buttonevent": 1002},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)

View file

@ -121,13 +121,11 @@ async def test_gateway_device_configuration_url_when_addon(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "presence",
"name": "presence", "type": "ZHAPresence",
"type": "ZHAPresence", "state": {"presence": False},
"state": {"presence": False}, "config": {"on": True, "reachable": True},
"config": {"on": True, "reachable": True}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )

View file

@ -96,27 +96,25 @@ async def test_lock_from_light(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "battery": 100,
"battery": 100, "lock": False,
"lock": False, "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 11,
"ep": 11, "etag": "a43862f76b7fa48b0fbb9107df123b0e",
"etag": "a43862f76b7fa48b0fbb9107df123b0e", "lastseen": "2021-03-06T22:25Z",
"lastseen": "2021-03-06T22:25Z", "manufacturername": "Onesti Products AS",
"manufacturername": "Onesti Products AS", "modelid": "easyCodeTouch_v1",
"modelid": "easyCodeTouch_v1", "name": "Door lock",
"name": "Door lock", "state": {
"state": { "lastupdated": "2021-03-06T21:25:45.624",
"lastupdated": "2021-03-06T21:25:45.624", "lockstate": "unlocked",
"lockstate": "unlocked", },
}, "swversion": "20201211",
"swversion": "20201211", "type": "ZHADoorLock",
"type": "ZHADoorLock", "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
], ],
) )
@ -132,7 +130,6 @@ async def test_lock_from_sensor(
event_changed_sensor = { event_changed_sensor = {
"r": "sensors", "r": "sensors",
"id": "1",
"state": {"lockstate": "locked"}, "state": {"lockstate": "locked"},
} }
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
@ -142,7 +139,7 @@ async def test_lock_from_sensor(
# Verify service calls # Verify service calls
aioclient_mock = mock_put_request("/sensors/1/config") aioclient_mock = mock_put_request("/sensors/0/config")
# Service lock door # Service lock door

View file

@ -30,30 +30,28 @@ from tests.components.logbook.common import MockRow, mock_humanify
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "armed": "disarmed",
"armed": "disarmed", "enrolled": 0,
"enrolled": 0, "on": True,
"on": True, "panel": "disarmed",
"panel": "disarmed", "pending": [],
"pending": [], "reachable": True,
"reachable": True, },
}, "ep": 1,
"ep": 1, "etag": "3c4008d74035dfaa1f0bb30d24468b12",
"etag": "3c4008d74035dfaa1f0bb30d24468b12", "lastseen": "2021-04-02T13:07Z",
"lastseen": "2021-04-02T13:07Z", "manufacturername": "Universal Electronics Inc",
"manufacturername": "Universal Electronics Inc", "modelid": "URC4450BC0-X-R",
"modelid": "URC4450BC0-X-R", "name": "Keypad",
"name": "Keypad", "state": {
"state": { "action": "armed_away,1111,55",
"action": "armed_away,1111,55", "lastupdated": "2021-04-02T13:08:18.937",
"lastupdated": "2021-04-02T13:08:18.937", "lowbattery": False,
"lowbattery": False, "tampered": True,
"tampered": True, },
}, "type": "ZHAAncillaryControl",
"type": "ZHAAncillaryControl", "uniqueid": "00:0d:6f:00:13:4f:61:39-01-0501",
"uniqueid": "00:0d:6f:00:13:4f:61:39-01-0501",
}
} }
], ],
) )
@ -64,8 +62,8 @@ async def test_humanifying_deconz_alarm_event(
sensor_payload: dict[str, Any], sensor_payload: dict[str, Any],
) -> None: ) -> None:
"""Test humanifying deCONZ alarm event.""" """Test humanifying deCONZ alarm event."""
keypad_event_id = slugify(sensor_payload["1"]["name"]) keypad_event_id = slugify(sensor_payload["name"])
keypad_serial = serial_from_unique_id(sensor_payload["1"]["uniqueid"]) keypad_serial = serial_from_unique_id(sensor_payload["uniqueid"])
keypad_entry = device_registry.async_get_device( keypad_entry = device_registry.async_get_device(
identifiers={(DECONZ_DOMAIN, keypad_serial)} identifiers={(DECONZ_DOMAIN, keypad_serial)}
) )

View file

@ -23,18 +23,16 @@ from tests.test_util.aiohttp import AiohttpClientMocker
TEST_DATA = [ TEST_DATA = [
( # Presence sensor - delay configuration ( # Presence sensor - delay configuration
{ {
"0": { "name": "Presence sensor",
"name": "Presence sensor", "type": "ZHAPresence",
"type": "ZHAPresence", "state": {"dark": False, "presence": False},
"state": {"dark": False, "presence": False}, "config": {
"config": { "delay": 0,
"delay": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, "temperature": 10,
"temperature": 10, },
}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
}, },
{ {
"entity_count": 3, "entity_count": 3,
@ -61,18 +59,16 @@ TEST_DATA = [
), ),
( # Presence sensor - duration configuration ( # Presence sensor - duration configuration
{ {
"0": { "name": "Presence sensor",
"name": "Presence sensor", "type": "ZHAPresence",
"type": "ZHAPresence", "state": {"dark": False, "presence": False},
"state": {"dark": False, "presence": False}, "config": {
"config": { "duration": 0,
"duration": 0, "on": True,
"on": True, "reachable": True,
"reachable": True, "temperature": 10,
"temperature": 10, },
}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
}, },
{ {
"entity_count": 3, "entity_count": 3,

View file

@ -24,29 +24,27 @@ from tests.test_util.aiohttp import AiohttpClientMocker
TEST_DATA = [ TEST_DATA = [
( # Presence Device Mode ( # Presence Device Mode
{ {
"1": { "config": {
"config": { "devicemode": "undirected",
"devicemode": "undirected", "on": True,
"on": True, "reachable": True,
"reachable": True, "sensitivity": 3,
"sensitivity": 3, "triggerdistance": "medium",
"triggerdistance": "medium", },
}, "etag": "13ff209f9401b317987d42506dd4cd79",
"etag": "13ff209f9401b317987d42506dd4cd79", "lastannounced": None,
"lastannounced": None, "lastseen": "2022-06-28T23:13Z",
"lastseen": "2022-06-28T23:13Z", "manufacturername": "aqara",
"manufacturername": "aqara", "modelid": "lumi.motion.ac01",
"modelid": "lumi.motion.ac01", "name": "Aqara FP1",
"name": "Aqara FP1", "state": {
"state": { "lastupdated": "2022-06-28T23:13:38.577",
"lastupdated": "2022-06-28T23:13:38.577", "presence": True,
"presence": True, "presenceevent": "leave",
"presenceevent": "leave", },
}, "swversion": "20210121",
"swversion": "20210121", "type": "ZHAPresence",
"type": "ZHAPresence", "uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
}
}, },
{ {
"entity_count": 5, "entity_count": 5,
@ -59,35 +57,33 @@ TEST_DATA = [
"options": ["leftright", "undirected"], "options": ["leftright", "undirected"],
}, },
"option": PresenceConfigDeviceMode.LEFT_AND_RIGHT.value, "option": PresenceConfigDeviceMode.LEFT_AND_RIGHT.value,
"request": "/sensors/1/config", "request": "/sensors/0/config",
"request_data": {"devicemode": "leftright"}, "request_data": {"devicemode": "leftright"},
}, },
), ),
( # Presence Sensitivity ( # Presence Sensitivity
{ {
"1": { "config": {
"config": { "devicemode": "undirected",
"devicemode": "undirected", "on": True,
"on": True, "reachable": True,
"reachable": True, "sensitivity": 3,
"sensitivity": 3, "triggerdistance": "medium",
"triggerdistance": "medium", },
}, "etag": "13ff209f9401b317987d42506dd4cd79",
"etag": "13ff209f9401b317987d42506dd4cd79", "lastannounced": None,
"lastannounced": None, "lastseen": "2022-06-28T23:13Z",
"lastseen": "2022-06-28T23:13Z", "manufacturername": "aqara",
"manufacturername": "aqara", "modelid": "lumi.motion.ac01",
"modelid": "lumi.motion.ac01", "name": "Aqara FP1",
"name": "Aqara FP1", "state": {
"state": { "lastupdated": "2022-06-28T23:13:38.577",
"lastupdated": "2022-06-28T23:13:38.577", "presence": True,
"presence": True, "presenceevent": "leave",
"presenceevent": "leave", },
}, "swversion": "20210121",
"swversion": "20210121", "type": "ZHAPresence",
"type": "ZHAPresence", "uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
}
}, },
{ {
"entity_count": 5, "entity_count": 5,
@ -100,35 +96,33 @@ TEST_DATA = [
"options": ["High", "Medium", "Low"], "options": ["High", "Medium", "Low"],
}, },
"option": "Medium", "option": "Medium",
"request": "/sensors/1/config", "request": "/sensors/0/config",
"request_data": {"sensitivity": 2}, "request_data": {"sensitivity": 2},
}, },
), ),
( # Presence Trigger Distance ( # Presence Trigger Distance
{ {
"1": { "config": {
"config": { "devicemode": "undirected",
"devicemode": "undirected", "on": True,
"on": True, "reachable": True,
"reachable": True, "sensitivity": 3,
"sensitivity": 3, "triggerdistance": "medium",
"triggerdistance": "medium", },
}, "etag": "13ff209f9401b317987d42506dd4cd79",
"etag": "13ff209f9401b317987d42506dd4cd79", "lastannounced": None,
"lastannounced": None, "lastseen": "2022-06-28T23:13Z",
"lastseen": "2022-06-28T23:13Z", "manufacturername": "aqara",
"manufacturername": "aqara", "modelid": "lumi.motion.ac01",
"modelid": "lumi.motion.ac01", "name": "Aqara FP1",
"name": "Aqara FP1", "state": {
"state": { "lastupdated": "2022-06-28T23:13:38.577",
"lastupdated": "2022-06-28T23:13:38.577", "presence": True,
"presence": True, "presenceevent": "leave",
"presenceevent": "leave", },
}, "swversion": "20210121",
"swversion": "20210121", "type": "ZHAPresence",
"type": "ZHAPresence", "uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-01-0406",
}
}, },
{ {
"entity_count": 5, "entity_count": 5,
@ -141,7 +135,7 @@ TEST_DATA = [
"options": ["far", "medium", "near"], "options": ["far", "medium", "near"],
}, },
"option": PresenceConfigTriggerDistance.FAR.value, "option": PresenceConfigTriggerDistance.FAR.value,
"request": "/sensors/1/config", "request": "/sensors/0/config",
"request_data": {"triggerdistance": "far"}, "request_data": {"triggerdistance": "far"},
}, },
), ),

View file

@ -899,7 +899,7 @@ TEST_DATA = [
] ]
@pytest.mark.parametrize(("sensor_1_payload", "expected"), TEST_DATA) @pytest.mark.parametrize(("sensor_payload", "expected"), TEST_DATA)
@pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: True}]) @pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: True}])
async def test_sensors( async def test_sensors(
hass: HomeAssistant, hass: HomeAssistant,
@ -952,7 +952,7 @@ async def test_sensors(
# Change state # Change state
event_changed_sensor = {"r": "sensors", "id": "1"} event_changed_sensor = {"r": "sensors"}
event_changed_sensor |= expected["websocket_event"] event_changed_sensor |= expected["websocket_event"]
await mock_websocket_data(event_changed_sensor) await mock_websocket_data(event_changed_sensor)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -974,14 +974,12 @@ async def test_sensors(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "CLIP temperature sensor",
"name": "CLIP temperature sensor", "type": "CLIPTemperature",
"type": "CLIPTemperature", "state": {"temperature": 2600},
"state": {"temperature": 2600}, "config": {},
"config": {}, "uniqueid": "00:00:00:00:00:00:00:02-00",
"uniqueid": "00:00:00:00:00:00:00:02-00", },
},
}
], ],
) )
@pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: False}]) @pytest.mark.parametrize("config_entry_options", [{CONF_ALLOW_CLIP_SENSOR: False}])
@ -1065,7 +1063,6 @@ async def test_add_new_sensor(
event_added_sensor = { event_added_sensor = {
"e": "added", "e": "added",
"r": "sensors", "r": "sensors",
"id": "1",
"sensor": { "sensor": {
"id": "Light sensor id", "id": "Light sensor id",
"name": "Light level sensor", "name": "Light level sensor",
@ -1102,14 +1099,12 @@ async def test_dont_add_sensor_if_state_is_none(
sensor_property: str, sensor_property: str,
) -> None: ) -> None:
"""Test sensor with scaled data is not created if state is None.""" """Test sensor with scaled data is not created if state is None."""
sensor_payload |= { sensor_payload["0"] = {
"1": { "name": "Sensor 1",
"name": "Sensor 1", "type": sensor_type,
"type": sensor_type, "state": {sensor_property: None},
"state": {sensor_property: None}, "config": {},
"config": {}, "uniqueid": "00:00:00:00:00:00:00:00-00",
"uniqueid": "00:00:00:00:00:00:00:00-00",
}
} }
await config_entry_factory() await config_entry_factory()
@ -1120,25 +1115,23 @@ async def test_dont_add_sensor_if_state_is_none(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "config": {
"config": { "on": True,
"on": True, "reachable": True,
"reachable": True, },
}, "ep": 2,
"ep": 2, "etag": "c2d2e42396f7c78e11e46c66e2ec0200",
"etag": "c2d2e42396f7c78e11e46c66e2ec0200", "lastseen": "2020-11-20T22:48Z",
"lastseen": "2020-11-20T22:48Z", "manufacturername": "BOSCH",
"manufacturername": "BOSCH", "modelid": "AIR",
"modelid": "AIR", "name": "BOSCH Air quality sensor",
"name": "BOSCH Air quality sensor", "state": {
"state": { "airquality": "poor",
"airquality": "poor", "lastupdated": "2020-11-20T22:48:00.209",
"lastupdated": "2020-11-20T22:48:00.209", },
}, "swversion": "20200402",
"swversion": "20200402", "type": "ZHAAirQuality",
"type": "ZHAAirQuality", "uniqueid": "00:00:00:00:00:00:00:00-02-fdef",
"uniqueid": "00:00:00:00:00:00:00:00-02-fdef",
}
} }
], ],
) )
@ -1350,7 +1343,7 @@ async def test_special_danfoss_battery_creation(
@pytest.mark.parametrize( @pytest.mark.parametrize(
"sensor_payload", "sensor_payload",
[{"0": {"type": "not supported", "name": "name", "state": {}, "config": {}}}], [{"type": "not supported", "name": "name", "state": {}, "config": {}}],
) )
@pytest.mark.usefixtures("config_entry_setup") @pytest.mark.usefixtures("config_entry_setup")
async def test_unsupported_sensor(hass: HomeAssistant) -> None: async def test_unsupported_sensor(hass: HomeAssistant) -> None:

View file

@ -239,13 +239,11 @@ async def test_service_refresh_devices(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "Switch 1",
"name": "Switch 1", "type": "ZHASwitch",
"type": "ZHASwitch", "state": {"buttonevent": 1000},
"state": {"buttonevent": 1000}, "config": {"battery": 100},
"config": {"battery": 100}, "uniqueid": "00:00:00:00:00:00:00:01-00",
"uniqueid": "00:00:00:00:00:00:00:01-00",
}
} }
], ],
) )
@ -284,7 +282,7 @@ async def test_service_refresh_devices_trigger_no_state_update(
} }
}, },
"sensors": { "sensors": {
"1": { "0": {
"name": "Switch 1", "name": "Switch 1",
"type": "ZHASwitch", "type": "ZHASwitch",
"state": {"buttonevent": 1000}, "state": {"buttonevent": 1000},
@ -319,13 +317,11 @@ async def test_service_refresh_devices_trigger_no_state_update(
"sensor_payload", "sensor_payload",
[ [
{ {
"1": { "name": "Switch 1",
"name": "Switch 1", "type": "ZHASwitch",
"type": "ZHASwitch", "state": {"buttonevent": 1000, "gesture": 1},
"state": {"buttonevent": 1000, "gesture": 1}, "config": {"battery": 100},
"config": {"battery": 100}, "uniqueid": "00:00:00:00:00:00:00:03-00",
"uniqueid": "00:00:00:00:00:00:00:03-00",
},
} }
], ],
) )