1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Use new zwave_js client (#45872)

* Use new zwave_js client

* Remove client callbacks

* Clean up on connect and on disconnect

* Clean log

* Add stop listen to unsubscribe callbacks

* Fix most tests

* Adapt to new listen interface

* Fix most tests

* Remove stale connection state feature

* Bump zwave-js-server-python to 0.16.0

* Clean up disconnect
This commit is contained in:
Martin Hjelmare
2021-02-02 20:59:56 +01:00
committed by GitHub
parent 2e98cfb9ab
commit 524b9e7b1f
7 changed files with 104 additions and 130 deletions

View File

@@ -1,6 +1,7 @@
"""Provide common Z-Wave JS fixtures."""
import asyncio
import json
from unittest.mock import DEFAULT, Mock, patch
from unittest.mock import DEFAULT, AsyncMock, patch
import pytest
from zwave_js_server.event import Event
@@ -149,35 +150,31 @@ def in_wall_smart_fan_control_state_fixture():
def mock_client_fixture(controller_state, version_state):
"""Mock a client."""
def mock_callback():
callbacks = []
def add_callback(cb):
callbacks.append(cb)
return DEFAULT
return callbacks, Mock(side_effect=add_callback)
with patch(
"homeassistant.components.zwave_js.ZwaveClient", autospec=True
) as client_class:
client = client_class.return_value
connect_callback, client.register_on_connect = mock_callback()
initialized_callback, client.register_on_initialized = mock_callback()
async def connect():
for cb in connect_callback:
await cb()
await asyncio.sleep(0)
client.state = "connected"
client.connected = True
for cb in initialized_callback:
await cb()
async def listen(driver_ready: asyncio.Event) -> None:
driver_ready.set()
client.connect = Mock(side_effect=connect)
async def disconnect():
client.state = "disconnected"
client.connected = False
client.connect = AsyncMock(side_effect=connect)
client.listen = AsyncMock(side_effect=listen)
client.disconnect = AsyncMock(side_effect=disconnect)
client.driver = Driver(client, controller_state)
client.version = VersionInfo.from_message(version_state)
client.ws_server_url = "ws://test:3000/zjs"
client.state = "connected"
yield client