Use spec for Whirlpool mocks (#143416)

Use `spec` to cleanup unecessary mock function definitions.
This commit is contained in:
Abílio Costa 2025-04-22 08:07:18 +01:00 committed by GitHub
parent 30b7e36f10
commit 44f2897919
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,10 +1,10 @@
"""Fixtures for the Whirlpool Sixth Sense integration tests.""" """Fixtures for the Whirlpool Sixth Sense integration tests."""
from unittest import mock from unittest import mock
from unittest.mock import AsyncMock, MagicMock from unittest.mock import Mock
import pytest import pytest
from whirlpool import aircon, washerdryer from whirlpool import aircon, appliancesmanager, auth, washerdryer
from whirlpool.backendselector import Brand, Region from whirlpool.backendselector import Brand, Region
from .const import MOCK_SAID1, MOCK_SAID2 from .const import MOCK_SAID1, MOCK_SAID2
@ -36,12 +36,13 @@ def fixture_brand(request: pytest.FixtureRequest) -> tuple[str, Brand]:
def fixture_mock_auth_api(): def fixture_mock_auth_api():
"""Set up Auth fixture.""" """Set up Auth fixture."""
with ( with (
mock.patch("homeassistant.components.whirlpool.Auth") as mock_auth, mock.patch(
"homeassistant.components.whirlpool.Auth", spec=auth.Auth
) as mock_auth,
mock.patch( mock.patch(
"homeassistant.components.whirlpool.config_flow.Auth", new=mock_auth "homeassistant.components.whirlpool.config_flow.Auth", new=mock_auth
), ),
): ):
mock_auth.return_value.do_auth = AsyncMock()
mock_auth.return_value.is_access_token_valid.return_value = True mock_auth.return_value.is_access_token_valid.return_value = True
yield mock_auth yield mock_auth
@ -53,16 +54,14 @@ def fixture_mock_appliances_manager_api(
"""Set up AppliancesManager fixture.""" """Set up AppliancesManager fixture."""
with ( with (
mock.patch( mock.patch(
"homeassistant.components.whirlpool.AppliancesManager" "homeassistant.components.whirlpool.AppliancesManager",
spec=appliancesmanager.AppliancesManager,
) as mock_appliances_manager, ) as mock_appliances_manager,
mock.patch( mock.patch(
"homeassistant.components.whirlpool.config_flow.AppliancesManager", "homeassistant.components.whirlpool.config_flow.AppliancesManager",
new=mock_appliances_manager, new=mock_appliances_manager,
), ),
): ):
mock_appliances_manager.return_value.fetch_appliances = AsyncMock()
mock_appliances_manager.return_value.connect = AsyncMock()
mock_appliances_manager.return_value.disconnect = AsyncMock()
mock_appliances_manager.return_value.aircons = [ mock_appliances_manager.return_value.aircons = [
mock_aircon1_api, mock_aircon1_api,
mock_aircon2_api, mock_aircon2_api,
@ -91,12 +90,11 @@ def fixture_mock_backend_selector_api():
def get_aircon_mock(said): def get_aircon_mock(said):
"""Get a mock of an air conditioner.""" """Get a mock of an air conditioner."""
mock_aircon = mock.Mock(said=said) mock_aircon = Mock(spec=aircon.Aircon, said=said)
mock_aircon.name = f"Aircon {said}" mock_aircon.name = f"Aircon {said}"
mock_aircon.register_attr_callback = MagicMock() mock_aircon.appliance_info = Mock(
mock_aircon.appliance_info.data_model = "aircon_model" data_model="aircon_model", category="aircon", model_number="12345"
mock_aircon.appliance_info.category = "aircon" )
mock_aircon.appliance_info.model_number = "12345"
mock_aircon.get_online.return_value = True mock_aircon.get_online.return_value = True
mock_aircon.get_power_on.return_value = True mock_aircon.get_power_on.return_value = True
mock_aircon.get_mode.return_value = aircon.Mode.Cool mock_aircon.get_mode.return_value = aircon.Mode.Cool
@ -107,14 +105,6 @@ def get_aircon_mock(said):
mock_aircon.get_humidity.return_value = 50 mock_aircon.get_humidity.return_value = 50
mock_aircon.get_h_louver_swing.return_value = True mock_aircon.get_h_louver_swing.return_value = True
mock_aircon.set_power_on = AsyncMock()
mock_aircon.set_mode = AsyncMock()
mock_aircon.set_temp = AsyncMock()
mock_aircon.set_humidity = AsyncMock()
mock_aircon.set_mode = AsyncMock()
mock_aircon.set_fanspeed = AsyncMock()
mock_aircon.set_h_louver_swing = AsyncMock()
return mock_aircon return mock_aircon
@ -133,13 +123,11 @@ def fixture_mock_aircon2_api():
@pytest.fixture @pytest.fixture
def mock_washer_api(): def mock_washer_api():
"""Get a mock of a washer.""" """Get a mock of a washer."""
mock_washer = mock.Mock(said="said_washer") mock_washer = Mock(spec=washerdryer.WasherDryer, said="said_washer")
mock_washer.name = "Washer" mock_washer.name = "Washer"
mock_washer.fetch_data = AsyncMock() mock_washer.appliance_info = Mock(
mock_washer.register_attr_callback = MagicMock() data_model="washer", category="washer_dryer", model_number="12345"
mock_washer.appliance_info.data_model = "washer" )
mock_washer.appliance_info.category = "washer_dryer"
mock_washer.appliance_info.model_number = "12345"
mock_washer.get_online.return_value = True mock_washer.get_online.return_value = True
mock_washer.get_machine_state.return_value = ( mock_washer.get_machine_state.return_value = (
washerdryer.MachineState.RunningMainCycle washerdryer.MachineState.RunningMainCycle
@ -160,13 +148,11 @@ def mock_washer_api():
@pytest.fixture @pytest.fixture
def mock_dryer_api(): def mock_dryer_api():
"""Get a mock of a dryer.""" """Get a mock of a dryer."""
mock_dryer = mock.Mock(said="said_dryer") mock_dryer = mock.Mock(spec=washerdryer.WasherDryer, said="said_dryer")
mock_dryer.name = "Dryer" mock_dryer.name = "Dryer"
mock_dryer.fetch_data = AsyncMock() mock_dryer.appliance_info = Mock(
mock_dryer.register_attr_callback = MagicMock() data_model="dryer", category="washer_dryer", model_number="12345"
mock_dryer.appliance_info.data_model = "dryer" )
mock_dryer.appliance_info.category = "washer_dryer"
mock_dryer.appliance_info.model_number = "12345"
mock_dryer.get_online.return_value = True mock_dryer.get_online.return_value = True
mock_dryer.get_machine_state.return_value = ( mock_dryer.get_machine_state.return_value = (
washerdryer.MachineState.RunningMainCycle washerdryer.MachineState.RunningMainCycle
@ -179,5 +165,4 @@ def mock_dryer_api():
mock_dryer.get_cycle_status_soaking.return_value = False mock_dryer.get_cycle_status_soaking.return_value = False
mock_dryer.get_cycle_status_spinning.return_value = False mock_dryer.get_cycle_status_spinning.return_value = False
mock_dryer.get_cycle_status_washing.return_value = False mock_dryer.get_cycle_status_washing.return_value = False
return mock_dryer return mock_dryer