From 31ed32da6cb27a82feed0c930d75e3102a71ce90 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Thu, 4 Jul 2024 14:20:57 +0200 Subject: [PATCH] Use fixtures in deCONZ alarm control panel tests (#120967) --- .../deconz/test_alarm_control_panel.py | 71 ++++++++----------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/tests/components/deconz/test_alarm_control_panel.py b/tests/components/deconz/test_alarm_control_panel.py index c855076de2f..1f1b65aff23 100644 --- a/tests/components/deconz/test_alarm_control_panel.py +++ b/tests/components/deconz/test_alarm_control_panel.py @@ -1,12 +1,14 @@ """deCONZ alarm control panel platform tests.""" -from unittest.mock import patch +from collections.abc import Callable from pydeconz.models.sensor.ancillary_control import AncillaryControlPanel +import pytest from homeassistant.components.alarm_control_panel import ( DOMAIN as ALARM_CONTROL_PANEL_DOMAIN, ) +from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_CODE, ATTR_ENTITY_ID, @@ -26,29 +28,13 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant -from .test_gateway import ( - DECONZ_WEB_REQUEST, - mock_deconz_put_request, - setup_deconz_integration, -) - from tests.test_util.aiohttp import AiohttpClientMocker -async def test_no_sensors( - hass: HomeAssistant, aioclient_mock: AiohttpClientMocker -) -> None: - """Test that no sensors in deconz results in no climate entities.""" - await setup_deconz_integration(hass, aioclient_mock) - assert len(hass.states.async_all()) == 0 - - -async def test_alarm_control_panel( - hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, mock_deconz_websocket -) -> None: - """Test successful creation of alarm control panel entities.""" - data = { - "alarmsystems": { +@pytest.mark.parametrize( + "alarm_system_payload", + [ + { "0": { "name": "default", "config": { @@ -75,8 +61,13 @@ async def test_alarm_control_panel( }, }, } - }, - "sensors": { + } + ], +) +@pytest.mark.parametrize( + "sensor_payload", + [ + { "0": { "config": { "battery": 95, @@ -103,11 +94,17 @@ async def test_alarm_control_panel( "type": "ZHAAncillaryControl", "uniqueid": "00:00:00:00:00:00:00:00-00", } - }, - } - with patch.dict(DECONZ_WEB_REQUEST, data): - config_entry = await setup_deconz_integration(hass, aioclient_mock) - + } + ], +) +async def test_alarm_control_panel( + hass: HomeAssistant, + aioclient_mock: AiohttpClientMocker, + config_entry_setup: ConfigEntry, + mock_put_request: Callable[[str, str], AiohttpClientMocker], + mock_deconz_websocket, +) -> None: + """Test successful creation of alarm control panel entities.""" assert len(hass.states.async_all()) == 4 assert hass.states.get("alarm_control_panel.keypad").state == STATE_UNKNOWN @@ -240,9 +237,7 @@ async def test_alarm_control_panel( # Service set alarm to away mode - mock_deconz_put_request( - aioclient_mock, config_entry.data, "/alarmsystems/0/arm_away" - ) + aioclient_mock = mock_put_request("/alarmsystems/0/arm_away") await hass.services.async_call( ALARM_CONTROL_PANEL_DOMAIN, @@ -254,9 +249,7 @@ async def test_alarm_control_panel( # Service set alarm to home mode - mock_deconz_put_request( - aioclient_mock, config_entry.data, "/alarmsystems/0/arm_stay" - ) + aioclient_mock = mock_put_request("/alarmsystems/0/arm_stay") await hass.services.async_call( ALARM_CONTROL_PANEL_DOMAIN, @@ -268,9 +261,7 @@ async def test_alarm_control_panel( # Service set alarm to night mode - mock_deconz_put_request( - aioclient_mock, config_entry.data, "/alarmsystems/0/arm_night" - ) + aioclient_mock = mock_put_request("/alarmsystems/0/arm_night") await hass.services.async_call( ALARM_CONTROL_PANEL_DOMAIN, @@ -282,7 +273,7 @@ async def test_alarm_control_panel( # Service set alarm to disarmed - mock_deconz_put_request(aioclient_mock, config_entry.data, "/alarmsystems/0/disarm") + aioclient_mock = mock_put_request("/alarmsystems/0/disarm") await hass.services.async_call( ALARM_CONTROL_PANEL_DOMAIN, @@ -292,13 +283,13 @@ async def test_alarm_control_panel( ) assert aioclient_mock.mock_calls[4][2] == {"code0": "4567"} - await hass.config_entries.async_unload(config_entry.entry_id) + await hass.config_entries.async_unload(config_entry_setup.entry_id) states = hass.states.async_all() assert len(states) == 4 for state in states: assert state.state == STATE_UNAVAILABLE - await hass.config_entries.async_remove(config_entry.entry_id) + await hass.config_entries.async_remove(config_entry_setup.entry_id) await hass.async_block_till_done() assert len(hass.states.async_all()) == 0