33import asyncio
44import binascii
55import logging
6- import sys
76
87import pytest
9- import serial
108import zigpy .config
119
1210from zigpy_deconz import api as deconz_api , types as t , uart
@@ -239,7 +237,7 @@ def test_simplified_beacon(api):
239237
240238
241239async def test_aps_data_confirm (api , monkeypatch ):
242- monkeypatch .setattr (deconz_api , "COMMAND_TIMEOUT" , 0.1 )
240+ monkeypatch .setattr (deconz_api , "COMMAND_TIMEOUT" , 0.01 )
243241
244242 success = True
245243
@@ -254,9 +252,10 @@ def mock_cmd(*args, **kwargs):
254252
255253 res = await api ._aps_data_confirm ()
256254 assert res is not None
257- assert api ._data_confirm is True
255+ assert api ._data_confirm is False
258256
259257 success = False
258+ api ._data_confirm = True
260259 res = await api ._aps_data_confirm ()
261260 assert res is None
262261 assert api ._data_confirm is False
@@ -291,9 +290,10 @@ def mock_cmd(*args, **kwargs):
291290
292291 res = await api ._aps_data_indication ()
293292 assert res is not None
294- assert api ._data_indication is True
293+ assert api ._data_indication is False
295294
296295 success = False
296+ api ._data_indication = True
297297 res = await api ._aps_data_indication ()
298298 assert res is None
299299 assert api ._data_indication is False
@@ -524,16 +524,7 @@ async def test_probe_success(mock_connect, mock_device_state):
524524
525525@patch .object (deconz_api .Deconz , "device_state" , new_callable = AsyncMock )
526526@patch ("zigpy_deconz.uart.connect" , return_value = MagicMock (spec_set = uart .Gateway ))
527- @pytest .mark .parametrize (
528- "exception" ,
529- (
530- asyncio .TimeoutError ,
531- serial .SerialException ,
532- zigpy_deconz .exception .CommandError ,
533- )
534- if sys .version_info [:3 ] != (3 , 7 , 9 )
535- else (asyncio .TimeoutError ,),
536- )
527+ @pytest .mark .parametrize ("exception" , (asyncio .TimeoutError ,))
537528async def test_probe_fail (mock_connect , mock_device_state , exception ):
538529 """Test device probing fails."""
539530
@@ -587,7 +578,7 @@ async def test_aps_data_req_deserialize_error(api, uart_gw, status, caplog):
587578
588579 device_state = (
589580 deconz_api .DeviceState .APSDE_DATA_INDICATION
590- | deconz_api .DeviceState .APSDE_DATA_REQUEST_SLOTS_AVAILABLE
581+ | deconz_api .DeviceState .APSDE_DATA_CONFIRM
591582 | deconz_api .NetworkState .CONNECTED
592583 )
593584 api ._handle_device_state_value (device_state )
@@ -606,3 +597,15 @@ async def test_aps_data_req_deserialize_error(api, uart_gw, status, caplog):
606597 await asyncio .sleep (0 )
607598 await asyncio .sleep (0 )
608599 assert api ._data_indication is False
600+
601+
602+ async def test_set_item (api ):
603+ """Test item setter."""
604+
605+ with patch .object (api , "write_parameter" , new = AsyncMock ()) as write_mock :
606+ api ["test" ] = sentinel .test_param
607+ for i in range (10 ):
608+ await asyncio .sleep (0 )
609+ assert write_mock .await_count == 1
610+ assert write_mock .call_args [0 ][0 ] == "test"
611+ assert write_mock .call_args [0 ][1 ] is sentinel .test_param
0 commit comments