"""Tests for the Huawei LTE switches.""" from unittest.mock import MagicMock, patch from huawei_lte_api.enums.device import ControlModeEnum from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS from homeassistant.components.huawei_lte.const import ( BUTTON_KEY_CLEAR_TRAFFIC_STATISTICS, BUTTON_KEY_RESTART, DOMAIN, SERVICE_SUSPEND_INTEGRATION, ) from homeassistant.const import ATTR_ENTITY_ID, CONF_URL from homeassistant.core import HomeAssistant from . import magic_client from tests.common import MockConfigEntry MOCK_CONF_URL = "http://huawei-lte.example.com" @patch("homeassistant.components.huawei_lte.Connection", MagicMock()) @patch("homeassistant.components.huawei_lte.Client", return_value=magic_client({})) async def test_clear_traffic_statistics(client, hass: HomeAssistant) -> None: """Test clear traffic statistics button.""" huawei_lte = MockConfigEntry(domain=DOMAIN, data={CONF_URL: MOCK_CONF_URL}) huawei_lte.add_to_hass(hass) await hass.config_entries.async_setup(huawei_lte.entry_id) await hass.async_block_till_done() await hass.services.async_call( BUTTON_DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: f"button.lte_{BUTTON_KEY_CLEAR_TRAFFIC_STATISTICS}"}, blocking=True, ) await hass.async_block_till_done() client.return_value.monitoring.set_clear_traffic.assert_called_once() client.return_value.monitoring.set_clear_traffic.reset_mock() await hass.services.async_call( DOMAIN, SERVICE_SUSPEND_INTEGRATION, {CONF_URL: MOCK_CONF_URL}, blocking=True, ) await hass.async_block_till_done() client.return_value.monitoring.set_clear_traffic.assert_not_called() @patch("homeassistant.components.huawei_lte.Connection", MagicMock()) @patch("homeassistant.components.huawei_lte.Client", return_value=magic_client({})) async def test_restart(client, hass: HomeAssistant) -> None: """Test restart button.""" huawei_lte = MockConfigEntry(domain=DOMAIN, data={CONF_URL: MOCK_CONF_URL}) huawei_lte.add_to_hass(hass) await hass.config_entries.async_setup(huawei_lte.entry_id) await hass.async_block_till_done() await hass.services.async_call( BUTTON_DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: f"button.lte_{BUTTON_KEY_RESTART}"}, blocking=True, ) await hass.async_block_till_done() client.return_value.device.set_control.assert_called_with(ControlModeEnum.REBOOT) client.return_value.device.set_control.reset_mock() await hass.services.async_call( DOMAIN, SERVICE_SUSPEND_INTEGRATION, {CONF_URL: MOCK_CONF_URL}, blocking=True, ) await hass.async_block_till_done() client.return_value.device.set_control.assert_not_called()