mirror of
https://github.com/home-assistant/core.git
synced 2025-04-22 16:27:56 +00:00
Refactor tradfri diagnostics tests (#88017)
This commit is contained in:
parent
8993a36e27
commit
ab2ab1573e
@ -2,12 +2,20 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Generator
|
||||
import json
|
||||
from typing import Any
|
||||
from unittest.mock import MagicMock, Mock, patch
|
||||
|
||||
import pytest
|
||||
from pytradfri.device import Device
|
||||
from pytradfri.device.air_purifier import AirPurifier
|
||||
|
||||
from homeassistant.components.tradfri.const import DOMAIN
|
||||
|
||||
from . import GATEWAY_ID, TRADFRI_PATH
|
||||
|
||||
from tests.common import load_fixture
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_gateway_info():
|
||||
@ -79,3 +87,18 @@ def mock_api_factory(mock_api) -> Generator[MagicMock, None, None]:
|
||||
factory.init.return_value = factory.return_value
|
||||
factory.return_value.request = mock_api
|
||||
yield factory.return_value
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def air_purifier_response() -> dict[str, Any]:
|
||||
"""Return an air purifier response."""
|
||||
return json.loads(load_fixture("air_purifier.json", DOMAIN))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def air_purifier(air_purifier_response: dict[str, Any]) -> AirPurifier:
|
||||
"""Return air purifier."""
|
||||
device = Device(air_purifier_response)
|
||||
air_purifier_control = device.air_purifier_control
|
||||
assert air_purifier_control
|
||||
return air_purifier_control.air_purifiers[0]
|
||||
|
@ -1,55 +1,32 @@
|
||||
"""Tests for Tradfri diagnostics."""
|
||||
from unittest.mock import MagicMock, Mock, PropertyMock, patch
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, Mock
|
||||
|
||||
from pytradfri.device.air_purifier import AirPurifier
|
||||
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .common import setup_integration
|
||||
from .test_sensor import mock_fan
|
||||
|
||||
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
||||
from tests.typing import ClientSessionGenerator
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup(request):
|
||||
"""Set up patches for pytradfri methods for the fan platform.
|
||||
|
||||
This is used in test_fan as well as in test_sensor.
|
||||
"""
|
||||
with patch(
|
||||
"pytradfri.device.AirPurifierControl.raw",
|
||||
new_callable=PropertyMock,
|
||||
return_value=[{"mock": "mock"}],
|
||||
), patch(
|
||||
"pytradfri.device.AirPurifierControl.air_purifiers",
|
||||
):
|
||||
yield
|
||||
|
||||
|
||||
async def test_diagnostics(
|
||||
hass: HomeAssistant,
|
||||
hass_client: ClientSessionGenerator,
|
||||
mock_gateway: Mock,
|
||||
mock_api_factory: MagicMock,
|
||||
air_purifier: AirPurifier,
|
||||
) -> None:
|
||||
"""Test diagnostics for config entry."""
|
||||
mock_gateway.mock_devices.append(
|
||||
# Add a fan
|
||||
mock_fan(
|
||||
test_state={
|
||||
"fan_speed": 10,
|
||||
"air_quality": 42,
|
||||
"filter_lifetime_remaining": 120,
|
||||
}
|
||||
)
|
||||
)
|
||||
device = air_purifier.device
|
||||
mock_gateway.mock_devices.append(device)
|
||||
config_entry = await setup_integration(hass)
|
||||
|
||||
init_integration = await setup_integration(hass)
|
||||
|
||||
result = await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
|
||||
result = await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
|
||||
|
||||
assert isinstance(result, dict)
|
||||
assert result["gateway_version"] == "1.2.1234"
|
||||
assert result["device_data"] == ["model"]
|
||||
assert result["device_data"] == ["STARKVIND Air purifier"]
|
||||
|
@ -1,7 +1,6 @@
|
||||
"""Tradfri fan (recognised as air purifiers in the IKEA ecosystem) platform tests."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from typing import Any
|
||||
from unittest.mock import MagicMock, Mock
|
||||
|
||||
@ -12,7 +11,6 @@ from pytradfri.const import (
|
||||
ATTR_REACHABLE_STATE,
|
||||
ROOT_AIR_PURIFIER,
|
||||
)
|
||||
from pytradfri.device import Device
|
||||
from pytradfri.device.air_purifier import AirPurifier
|
||||
|
||||
from homeassistant.components.fan import (
|
||||
@ -26,7 +24,6 @@ from homeassistant.components.fan import (
|
||||
SERVICE_TURN_OFF,
|
||||
SERVICE_TURN_ON,
|
||||
)
|
||||
from homeassistant.components.tradfri.const import DOMAIN
|
||||
from homeassistant.const import (
|
||||
ATTR_SUPPORTED_FEATURES,
|
||||
STATE_OFF,
|
||||
@ -37,23 +34,6 @@ from homeassistant.core import HomeAssistant
|
||||
|
||||
from .common import setup_integration, trigger_observe_callback
|
||||
|
||||
from tests.common import load_fixture
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def air_purifier_response() -> dict[str, Any]:
|
||||
"""Return an air purifier response."""
|
||||
return json.loads(load_fixture("air_purifier.json", DOMAIN))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def air_purifier(air_purifier_response: dict[str, Any]) -> AirPurifier:
|
||||
"""Return air purifier."""
|
||||
device = Device(air_purifier_response)
|
||||
air_purifier_control = device.air_purifier_control
|
||||
assert air_purifier_control
|
||||
return air_purifier_control.air_purifiers[0]
|
||||
|
||||
|
||||
async def test_fan_available(
|
||||
hass: HomeAssistant,
|
||||
|
Loading…
x
Reference in New Issue
Block a user