Skip to content

Commit 1adabf4

Browse files
committed
additional test
1 parent abafba8 commit 1adabf4

File tree

1 file changed

+36
-9
lines changed

1 file changed

+36
-9
lines changed

tests/test_device.py

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,14 @@ def _update_last_seen(*args, **kwargs): # pylint: disable=unused-argument
246246
"zha.zigbee.cluster_handlers.general.BasicClusterHandler.async_initialize",
247247
new=mock.AsyncMock(),
248248
)
249+
@pytest.mark.parametrize(
250+
"zha_gateway",
251+
[
252+
"zha_gateway",
253+
"ws_gateways",
254+
],
255+
indirect=True,
256+
)
249257
async def test_check_available_unsuccessful(
250258
zha_gateway: Gateway,
251259
) -> None:
@@ -257,59 +265,78 @@ async def test_check_available_unsuccessful(
257265
zha_device = await join_zigpy_device(zha_gateway, device_with_basic_cluster_handler)
258266
basic_ch = device_with_basic_cluster_handler.endpoints[3].basic
259267

268+
if hasattr(zha_gateway, "ws_gateway"):
269+
server_device = zha_gateway.ws_gateway.devices[zha_device.ieee]
270+
server_gateway = zha_gateway.ws_gateway
271+
else:
272+
server_device = zha_device
273+
server_gateway = zha_gateway
274+
260275
assert zha_device.available is True
261276
assert basic_ch.read_attributes.await_count == 0
262277

263278
device_with_basic_cluster_handler.last_seen = (
264-
time.time() - zha_device.consider_unavailable_time - 2
279+
time.time() - server_device.consider_unavailable_time - 2
265280
)
266281

267-
for entity in zha_device.platform_entities.values():
282+
for entity in server_device.platform_entities.values():
268283
entity.emit = mock.MagicMock(wraps=entity.emit)
269284

270285
# we want to test the device availability handling alone
271-
zha_gateway.global_updater.stop()
286+
server_gateway.global_updater.stop()
272287

273288
# unsuccessfully ping zigpy device, but zha_device is still available
274289
await _send_time_changed(
275-
zha_gateway, zha_gateway._device_availability_checker.__polling_interval + 1
290+
zha_gateway, server_gateway._device_availability_checker.__polling_interval + 1
276291
)
277292

278293
assert basic_ch.read_attributes.await_count == 1
279294
assert basic_ch.read_attributes.await_args[0][0] == ["manufacturer"]
280295
assert zha_device.available is True
281296

282-
for entity in zha_device.platform_entities.values():
297+
for entity in server_device.platform_entities.values():
283298
entity.emit.assert_not_called()
284299
assert entity.available
300+
if server_device != zha_device:
301+
assert zha_device.platform_entities[
302+
(entity.PLATFORM, entity.unique_id)
303+
].available
285304
entity.emit.reset_mock()
286305

287306
# still no traffic, but zha_device is still available
288307
await _send_time_changed(
289-
zha_gateway, zha_gateway._device_availability_checker.__polling_interval + 1
308+
zha_gateway, server_gateway._device_availability_checker.__polling_interval + 1
290309
)
291310

292311
assert basic_ch.read_attributes.await_count == 2
293312
assert basic_ch.read_attributes.await_args[0][0] == ["manufacturer"]
294313
assert zha_device.available is True
295314

296-
for entity in zha_device.platform_entities.values():
315+
for entity in server_device.platform_entities.values():
297316
entity.emit.assert_not_called()
298317
assert entity.available
318+
if server_device != zha_device:
319+
assert zha_device.platform_entities[
320+
(entity.PLATFORM, entity.unique_id)
321+
].available
299322
entity.emit.reset_mock()
300323

301324
# not even trying to update, device is unavailable
302325
await _send_time_changed(
303-
zha_gateway, zha_gateway._device_availability_checker.__polling_interval + 1
326+
zha_gateway, server_gateway._device_availability_checker.__polling_interval + 1
304327
)
305328

306329
assert basic_ch.read_attributes.await_count == 2
307330
assert basic_ch.read_attributes.await_args[0][0] == ["manufacturer"]
308331
assert zha_device.available is False
309332

310-
for entity in zha_device.platform_entities.values():
333+
for entity in server_device.platform_entities.values():
311334
entity.emit.assert_called()
312335
assert not entity.available
336+
if server_device != zha_device:
337+
assert not zha_device.platform_entities[
338+
(entity.PLATFORM, entity.unique_id)
339+
].available
313340
entity.emit.reset_mock()
314341

315342

0 commit comments

Comments
 (0)