diff --git a/tests/components/tradfri/conftest.py b/tests/components/tradfri/conftest.py index 32c4b74e8a5..d0e6c935822 100644 --- a/tests/components/tradfri/conftest.py +++ b/tests/components/tradfri/conftest.py @@ -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] diff --git a/tests/components/tradfri/test_diagnostics.py b/tests/components/tradfri/test_diagnostics.py index 2b400cb39bb..a30b75147ca 100644 --- a/tests/components/tradfri/test_diagnostics.py +++ b/tests/components/tradfri/test_diagnostics.py @@ -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"] diff --git a/tests/components/tradfri/test_fan.py b/tests/components/tradfri/test_fan.py index 60a38e06f0c..606afed77ce 100644 --- a/tests/components/tradfri/test_fan.py +++ b/tests/components/tradfri/test_fan.py @@ -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,