Open a ZHA repair when network settings change (#99482)
This commit is contained in:
parent
b9090452de
commit
2e4df6d2f2
18 changed files with 617 additions and 152 deletions
|
@ -2,7 +2,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from unittest.mock import call, patch
|
||||
from unittest.mock import AsyncMock, MagicMock, call, patch
|
||||
|
||||
import pytest
|
||||
import zigpy.backups
|
||||
|
@ -48,21 +48,18 @@ async def test_async_get_network_settings_inactive(
|
|||
backup.network_info.channel = 20
|
||||
zigpy_app_controller.backups.backups.append(backup)
|
||||
|
||||
with patch(
|
||||
"bellows.zigbee.application.ControllerApplication.__new__",
|
||||
return_value=zigpy_app_controller,
|
||||
), patch.object(
|
||||
zigpy_app_controller, "_load_db", wraps=zigpy_app_controller._load_db
|
||||
) as mock_load_db, patch.object(
|
||||
zigpy_app_controller,
|
||||
"start_network",
|
||||
wraps=zigpy_app_controller.start_network,
|
||||
) as mock_start_network:
|
||||
controller = AsyncMock()
|
||||
controller.SCHEMA = zigpy_app_controller.SCHEMA
|
||||
controller.new = AsyncMock(return_value=zigpy_app_controller)
|
||||
|
||||
with patch.dict(
|
||||
"homeassistant.components.zha.core.const.RadioType._member_map_",
|
||||
ezsp=MagicMock(controller=controller, description="EZSP"),
|
||||
):
|
||||
settings = await api.async_get_network_settings(hass)
|
||||
|
||||
assert len(mock_load_db.mock_calls) == 1
|
||||
assert len(mock_start_network.mock_calls) == 0
|
||||
assert settings.network_info.channel == 20
|
||||
assert len(zigpy_app_controller.start_network.mock_calls) == 0
|
||||
|
||||
|
||||
async def test_async_get_network_settings_missing(
|
||||
|
@ -78,11 +75,7 @@ async def test_async_get_network_settings_missing(
|
|||
zigpy_app_controller.state.network_info = zigpy.state.NetworkInfo()
|
||||
zigpy_app_controller.state.node_info = zigpy.state.NodeInfo()
|
||||
|
||||
with patch(
|
||||
"bellows.zigbee.application.ControllerApplication.__new__",
|
||||
return_value=zigpy_app_controller,
|
||||
):
|
||||
settings = await api.async_get_network_settings(hass)
|
||||
settings = await api.async_get_network_settings(hass)
|
||||
|
||||
assert settings is None
|
||||
|
||||
|
@ -115,12 +108,8 @@ async def test_change_channel(
|
|||
"""Test changing the channel."""
|
||||
await setup_zha()
|
||||
|
||||
with patch.object(
|
||||
zigpy_app_controller, "move_network_to_channel", autospec=True
|
||||
) as mock_move_network_to_channel:
|
||||
await api.async_change_channel(hass, 20)
|
||||
|
||||
assert mock_move_network_to_channel.mock_calls == [call(20)]
|
||||
await api.async_change_channel(hass, 20)
|
||||
assert zigpy_app_controller.move_network_to_channel.mock_calls == [call(20)]
|
||||
|
||||
|
||||
async def test_change_channel_auto(
|
||||
|
@ -129,16 +118,10 @@ async def test_change_channel_auto(
|
|||
"""Test changing the channel automatically using an energy scan."""
|
||||
await setup_zha()
|
||||
|
||||
with patch.object(
|
||||
zigpy_app_controller, "move_network_to_channel", autospec=True
|
||||
) as mock_move_network_to_channel, patch.object(
|
||||
zigpy_app_controller,
|
||||
"energy_scan",
|
||||
autospec=True,
|
||||
return_value={c: c for c in range(11, 26 + 1)},
|
||||
), patch.object(
|
||||
api, "pick_optimal_channel", autospec=True, return_value=25
|
||||
):
|
||||
zigpy_app_controller.energy_scan.side_effect = None
|
||||
zigpy_app_controller.energy_scan.return_value = {c: c for c in range(11, 26 + 1)}
|
||||
|
||||
with patch.object(api, "pick_optimal_channel", autospec=True, return_value=25):
|
||||
await api.async_change_channel(hass, "auto")
|
||||
|
||||
assert mock_move_network_to_channel.mock_calls == [call(25)]
|
||||
assert zigpy_app_controller.move_network_to_channel.mock_calls == [call(25)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue