Use async_load_fixture in modern_forms tests (#146011)

This commit is contained in:
epenet 2025-06-10 12:38:25 +02:00 committed by GitHub
parent 4acad77437
commit 279539265b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,7 +1,9 @@
"""Tests for the Modern Forms integration.""" """Tests for the Modern Forms integration."""
from collections.abc import Callable from collections.abc import Callable, Coroutine
from functools import partial
import json import json
from typing import Any
from aiomodernforms.const import COMMAND_QUERY_STATIC_DATA from aiomodernforms.const import COMMAND_QUERY_STATIC_DATA
@ -9,40 +11,52 @@ from homeassistant.components.modern_forms.const import DOMAIN
from homeassistant.const import CONF_HOST, CONF_MAC, CONTENT_TYPE_JSON from homeassistant.const import CONF_HOST, CONF_MAC, CONTENT_TYPE_JSON
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry, load_fixture from tests.common import MockConfigEntry, async_load_fixture
from tests.test_util.aiohttp import AiohttpClientMocker, AiohttpClientMockResponse from tests.test_util.aiohttp import AiohttpClientMocker, AiohttpClientMockResponse
async def modern_forms_call_mock(method, url, data): async def modern_forms_call_mock(
hass: HomeAssistant, method: str, url: str, data: dict[str, Any]
) -> AiohttpClientMockResponse:
"""Set up the basic returns based on info or status request.""" """Set up the basic returns based on info or status request."""
if COMMAND_QUERY_STATIC_DATA in data: if COMMAND_QUERY_STATIC_DATA in data:
fixture = "modern_forms/device_info.json" fixture = "device_info.json"
else: else:
fixture = "modern_forms/device_status.json" fixture = "device_status.json"
return AiohttpClientMockResponse( return AiohttpClientMockResponse(
method=method, url=url, json=json.loads(load_fixture(fixture)) method=method,
url=url,
json=json.loads(await async_load_fixture(hass, fixture, DOMAIN)),
) )
async def modern_forms_no_light_call_mock(method, url, data): async def modern_forms_no_light_call_mock(
hass: HomeAssistant, method: str, url: str, data: dict[str, Any]
) -> AiohttpClientMockResponse:
"""Set up the basic returns based on info or status request.""" """Set up the basic returns based on info or status request."""
if COMMAND_QUERY_STATIC_DATA in data: if COMMAND_QUERY_STATIC_DATA in data:
fixture = "modern_forms/device_info_no_light.json" fixture = "device_info_no_light.json"
else: else:
fixture = "modern_forms/device_status_no_light.json" fixture = "device_status_no_light.json"
return AiohttpClientMockResponse( return AiohttpClientMockResponse(
method=method, url=url, json=json.loads(load_fixture(fixture)) method=method,
url=url,
json=json.loads(await async_load_fixture(hass, fixture, DOMAIN)),
) )
async def modern_forms_timers_set_mock(method, url, data): async def modern_forms_timers_set_mock(
hass: HomeAssistant, method: str, url: str, data: dict[str, Any]
) -> AiohttpClientMockResponse:
"""Set up the basic returns based on info or status request.""" """Set up the basic returns based on info or status request."""
if COMMAND_QUERY_STATIC_DATA in data: if COMMAND_QUERY_STATIC_DATA in data:
fixture = "modern_forms/device_info.json" fixture = "device_info.json"
else: else:
fixture = "modern_forms/device_status_timers_active.json" fixture = "device_status_timers_active.json"
return AiohttpClientMockResponse( return AiohttpClientMockResponse(
method=method, url=url, json=json.loads(load_fixture(fixture)) method=method,
url=url,
json=json.loads(await async_load_fixture(hass, fixture, DOMAIN)),
) )
@ -51,13 +65,15 @@ async def init_integration(
aioclient_mock: AiohttpClientMocker, aioclient_mock: AiohttpClientMocker,
rgbw: bool = False, rgbw: bool = False,
skip_setup: bool = False, skip_setup: bool = False,
mock_type: Callable = modern_forms_call_mock, mock_type: Callable[
[str, str, dict[str, Any]], Coroutine[Any, Any, AiohttpClientMockResponse]
] = modern_forms_call_mock,
) -> MockConfigEntry: ) -> MockConfigEntry:
"""Set up the Modern Forms integration in Home Assistant.""" """Set up the Modern Forms integration in Home Assistant."""
aioclient_mock.post( aioclient_mock.post(
"http://192.168.1.123:80/mf", "http://192.168.1.123:80/mf",
side_effect=mock_type, side_effect=partial(mock_type, hass),
headers={"Content-Type": CONTENT_TYPE_JSON}, headers={"Content-Type": CONTENT_TYPE_JSON},
) )