Plugwise test-code improvements (#134193)

This commit is contained in:
Bouwe Westerdijk 2025-01-17 17:12:09 +01:00 committed by GitHub
parent 7b413b5faf
commit a2afc1b670
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 140 additions and 194 deletions

View File

@ -30,6 +30,24 @@ def _read_json(environment: str, call: str) -> dict[str, Any]:
return json.loads(fixture)
@pytest.fixture
def chosen_env(request: pytest.FixtureRequest) -> str:
"""Pass the chosen_env string.
Used with fixtures that require parametrization of the user-data fixture.
"""
return request.param
@pytest.fixture
def gateway_id(request: pytest.FixtureRequest) -> str:
"""Pass the gateway_id string.
Used with fixtures that require parametrization of the gateway_id.
"""
return request.param
@pytest.fixture
def mock_config_entry() -> MockConfigEntry:
"""Return the default mocked config entry."""
@ -76,7 +94,7 @@ def mock_smile_config_flow() -> Generator[MagicMock]:
def mock_smile_adam() -> Generator[MagicMock]:
"""Create a Mock Adam environment for testing exceptions."""
chosen_env = "m_adam_multiple_devices_per_zone"
all_data = _read_json(chosen_env, "all_data")
with (
patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
@ -97,7 +115,6 @@ def mock_smile_adam() -> Generator[MagicMock]:
smile.smile_model_id = "smile_open_therm"
smile.smile_name = "Adam"
smile.connect.return_value = Version("3.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
@ -106,15 +123,18 @@ def mock_smile_adam() -> Generator[MagicMock]:
@pytest.fixture
def mock_smile_adam_2() -> Generator[MagicMock]:
"""Create a 2nd Mock Adam environment for testing exceptions."""
chosen_env = "m_adam_heating"
def mock_smile_adam_heat_cool(chosen_env: str) -> Generator[MagicMock]:
"""Create a special base Mock Adam type for testing with different datasets."""
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
smile.connect.return_value = Version("3.6.4")
smile.gateway_id = "da224107914542988a88561b4452b0f6"
smile.heater_id = "056ee145a816487eaa69243c3280f8bf"
smile.smile_version = "3.6.4"
@ -123,47 +143,15 @@ def mock_smile_adam_2() -> Generator[MagicMock]:
smile.smile_model = "Gateway"
smile.smile_model_id = "smile_open_therm"
smile.smile_name = "Adam"
smile.connect.return_value = Version("3.6.4")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_adam_3() -> Generator[MagicMock]:
"""Create a 3rd Mock Adam environment for testing exceptions."""
chosen_env = "m_adam_cooling"
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.gateway_id = "da224107914542988a88561b4452b0f6"
smile.heater_id = "056ee145a816487eaa69243c3280f8bf"
smile.smile_version = "3.6.4"
smile.smile_type = "thermostat"
smile.smile_hostname = "smile98765"
smile.smile_model = "Gateway"
smile.smile_model_id = "smile_open_therm"
smile.smile_name = "Adam"
smile.connect.return_value = Version("3.6.4")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_adam_4() -> Generator[MagicMock]:
"""Create a 4th Mock Adam environment for testing exceptions."""
def mock_smile_adam_jip() -> Generator[MagicMock]:
"""Create a Mock adam-jip type for testing exceptions."""
chosen_env = "m_adam_jip"
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
@ -178,7 +166,6 @@ def mock_smile_adam_4() -> Generator[MagicMock]:
smile.smile_model_id = "smile_open_therm"
smile.smile_name = "Adam"
smile.connect.return_value = Version("3.2.8")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
@ -187,14 +174,18 @@ def mock_smile_adam_4() -> Generator[MagicMock]:
@pytest.fixture
def mock_smile_anna() -> Generator[MagicMock]:
"""Create a Mock Anna environment for testing exceptions."""
chosen_env = "anna_heatpump_heating"
def mock_smile_anna(chosen_env: str) -> Generator[MagicMock]:
"""Create a Mock Anna type for testing."""
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
smile.connect.return_value = Version("4.0.15")
smile.gateway_id = "015ae9ea3f964e668e490fa39da3870b"
smile.heater_id = "1cbf783bb11e4a7c8a6843dee3a86927"
smile.smile_version = "4.0.15"
@ -203,115 +194,31 @@ def mock_smile_anna() -> Generator[MagicMock]:
smile.smile_model = "Gateway"
smile.smile_model_id = "smile_thermo"
smile.smile_name = "Smile Anna"
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_anna_2() -> Generator[MagicMock]:
"""Create a 2nd Mock Anna environment for testing exceptions."""
chosen_env = "m_anna_heatpump_cooling"
def mock_smile_p1(chosen_env: str, gateway_id: str) -> Generator[MagicMock]:
"""Create a base Mock P1 type for testing with different datasets and gateway-ids."""
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.gateway_id = "015ae9ea3f964e668e490fa39da3870b"
smile.heater_id = "1cbf783bb11e4a7c8a6843dee3a86927"
smile.smile_version = "4.0.15"
smile.smile_type = "thermostat"
smile.smile_hostname = "smile98765"
smile.smile_model = "Gateway"
smile.smile_model_id = "smile_thermo"
smile.smile_name = "Smile Anna"
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_anna_3() -> Generator[MagicMock]:
"""Create a 3rd Mock Anna environment for testing exceptions."""
chosen_env = "m_anna_heatpump_idle"
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.gateway_id = "015ae9ea3f964e668e490fa39da3870b"
smile.heater_id = "1cbf783bb11e4a7c8a6843dee3a86927"
smile.smile_version = "4.0.15"
smile.smile_type = "thermostat"
smile.smile_hostname = "smile98765"
smile.smile_model = "Gateway"
smile.smile_model_id = "smile_thermo"
smile.smile_name = "Smile Anna"
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_p1() -> Generator[MagicMock]:
"""Create a Mock P1 DSMR environment for testing exceptions."""
chosen_env = "p1v4_442_single"
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.gateway_id = "a455b61e52394b2db5081ce025a430f3"
smile.connect.return_value = Version("4.4.2")
smile.gateway_id = gateway_id
smile.heater_id = None
smile.smile_version = "4.4.2"
smile.smile_type = "power"
smile.smile_hostname = "smile98765"
smile.smile_model = "Gateway"
smile.smile_model_id = "smile"
smile.smile_name = "Smile P1"
smile.connect.return_value = Version("4.4.2")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
yield smile
@pytest.fixture
def mock_smile_p1_2() -> Generator[MagicMock]:
"""Create a Mock P1 3-phase DSMR environment for testing exceptions."""
chosen_env = "p1v4_442_triple"
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
smile = smile_mock.return_value
smile.gateway_id = "03e65b16e4b247a29ae0d75a78cb492e"
smile.heater_id = None
smile.smile_version = "4.4.2"
smile.smile_type = "power"
smile.smile_hostname = "smile98765"
smile.smile_model = "Gateway"
smile.smile_model_id = "smile"
smile.smile_name = "Smile P1"
smile.connect.return_value = Version("4.4.2")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
smile.smile_version = "4.4.2"
yield smile
@ -320,6 +227,7 @@ def mock_smile_p1_2() -> Generator[MagicMock]:
def mock_smile_legacy_anna() -> Generator[MagicMock]:
"""Create a Mock legacy Anna environment for testing exceptions."""
chosen_env = "legacy_anna"
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
@ -334,7 +242,6 @@ def mock_smile_legacy_anna() -> Generator[MagicMock]:
smile.smile_model_id = None
smile.smile_name = "Smile Anna"
smile.connect.return_value = Version("1.8.22")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)
@ -346,6 +253,7 @@ def mock_smile_legacy_anna() -> Generator[MagicMock]:
def mock_stretch() -> Generator[MagicMock]:
"""Create a Mock Stretch environment for testing exceptions."""
chosen_env = "stretch_v31"
all_data = _read_json(chosen_env, "all_data")
with patch(
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
) as smile_mock:
@ -360,7 +268,6 @@ def mock_stretch() -> Generator[MagicMock]:
smile.smile_model_id = None
smile.smile_name = "Stretch"
smile.connect.return_value = Version("3.1.11")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["devices"], all_data["gateway"]
)

View File

@ -2,6 +2,8 @@
from unittest.mock import MagicMock
import pytest
from homeassistant.const import STATE_OFF, STATE_ON
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_component import async_update_entity
@ -9,32 +11,30 @@ from homeassistant.helpers.entity_component import async_update_entity
from tests.common import MockConfigEntry
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
@pytest.mark.parametrize(
("entity_id", "expected_state"),
[
("binary_sensor.opentherm_secondary_boiler_state", STATE_OFF),
("binary_sensor.opentherm_dhw_state", STATE_OFF),
("binary_sensor.opentherm_heating", STATE_ON),
("binary_sensor.opentherm_cooling_enabled", STATE_OFF),
("binary_sensor.opentherm_compressor_state", STATE_ON),
],
)
async def test_anna_climate_binary_sensor_entities(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
hass: HomeAssistant,
mock_smile_anna: MagicMock,
init_integration: MockConfigEntry,
entity_id: str,
expected_state: str,
) -> None:
"""Test creation of climate related binary_sensor entities."""
state = hass.states.get("binary_sensor.opentherm_secondary_boiler_state")
assert state
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.opentherm_dhw_state")
assert state
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.opentherm_heating")
assert state
assert state.state == STATE_ON
state = hass.states.get("binary_sensor.opentherm_cooling_enabled")
assert state
assert state.state == STATE_OFF
state = hass.states.get("binary_sensor.opentherm_compressor_state")
assert state
assert state.state == STATE_ON
state = hass.states.get(entity_id)
assert state.state == expected_state
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_climate_binary_sensor_change(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
) -> None:
@ -66,8 +66,12 @@ async def test_adam_climate_binary_sensor_change(
assert not state.attributes.get("other_msg")
async def test_p1_v4_binary_sensor_entity(
hass: HomeAssistant, mock_smile_p1_2: MagicMock, init_integration: MockConfigEntry
@pytest.mark.parametrize("chosen_env", ["p1v4_442_triple"], indirect=True)
@pytest.mark.parametrize(
"gateway_id", ["03e65b16e4b247a29ae0d75a78cb492e"], indirect=True
)
async def test_p1_binary_sensor_entity(
hass: HomeAssistant, mock_smile_p1: MagicMock, init_integration: MockConfigEntry
) -> None:
"""Test of a Smile P1 related plugwise-notification binary_sensor."""
state = hass.states.get("binary_sensor.smile_p1_plugwise_notification")

View File

@ -79,8 +79,11 @@ async def test_adam_climate_entity_attributes(
assert state.attributes[ATTR_TARGET_TEMP_STEP] == 0.1
@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True)
async def test_adam_2_climate_entity_attributes(
hass: HomeAssistant, mock_smile_adam_2: MagicMock, init_integration: MockConfigEntry
hass: HomeAssistant,
mock_smile_adam_heat_cool: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of adam climate device environment."""
state = hass.states.get("climate.living_room")
@ -104,9 +107,10 @@ async def test_adam_2_climate_entity_attributes(
]
@pytest.mark.parametrize("chosen_env", ["m_adam_cooling"], indirect=True)
async def test_adam_3_climate_entity_attributes(
hass: HomeAssistant,
mock_smile_adam_3: MagicMock,
mock_smile_adam_heat_cool: MagicMock,
init_integration: MockConfigEntry,
freezer: FrozenDateTimeFactory,
) -> None:
@ -120,7 +124,7 @@ async def test_adam_3_climate_entity_attributes(
HVACMode.AUTO,
HVACMode.COOL,
]
data = mock_smile_adam_3.async_update.return_value
data = mock_smile_adam_heat_cool.async_update.return_value
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"heating"
)
@ -148,7 +152,7 @@ async def test_adam_3_climate_entity_attributes(
HVACMode.HEAT,
]
data = mock_smile_adam_3.async_update.return_value
data = mock_smile_adam_heat_cool.async_update.return_value
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"cooling"
)
@ -266,7 +270,7 @@ async def test_adam_climate_entity_climate_changes(
async def test_adam_climate_off_mode_change(
hass: HomeAssistant,
mock_smile_adam_4: MagicMock,
mock_smile_adam_jip: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test handling of user requests in adam climate device environment."""
@ -282,9 +286,9 @@ async def test_adam_climate_off_mode_change(
},
blocking=True,
)
assert mock_smile_adam_4.set_schedule_state.call_count == 1
assert mock_smile_adam_4.set_regulation_mode.call_count == 1
mock_smile_adam_4.set_regulation_mode.assert_called_with("heating")
assert mock_smile_adam_jip.set_schedule_state.call_count == 1
assert mock_smile_adam_jip.set_regulation_mode.call_count == 1
mock_smile_adam_jip.set_regulation_mode.assert_called_with("heating")
state = hass.states.get("climate.kinderkamer")
assert state
@ -298,9 +302,9 @@ async def test_adam_climate_off_mode_change(
},
blocking=True,
)
assert mock_smile_adam_4.set_schedule_state.call_count == 1
assert mock_smile_adam_4.set_regulation_mode.call_count == 2
mock_smile_adam_4.set_regulation_mode.assert_called_with("off")
assert mock_smile_adam_jip.set_schedule_state.call_count == 1
assert mock_smile_adam_jip.set_regulation_mode.call_count == 2
mock_smile_adam_jip.set_regulation_mode.assert_called_with("off")
state = hass.states.get("climate.logeerkamer")
assert state
@ -314,10 +318,11 @@ async def test_adam_climate_off_mode_change(
},
blocking=True,
)
assert mock_smile_adam_4.set_schedule_state.call_count == 1
assert mock_smile_adam_4.set_regulation_mode.call_count == 2
assert mock_smile_adam_jip.set_schedule_state.call_count == 1
assert mock_smile_adam_jip.set_regulation_mode.call_count == 2
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_climate_entity_attributes(
hass: HomeAssistant,
mock_smile_anna: MagicMock,
@ -343,9 +348,10 @@ async def test_anna_climate_entity_attributes(
assert state.attributes[ATTR_TARGET_TEMP_STEP] == 0.1
@pytest.mark.parametrize("chosen_env", ["m_anna_heatpump_cooling"], indirect=True)
async def test_anna_2_climate_entity_attributes(
hass: HomeAssistant,
mock_smile_anna_2: MagicMock,
mock_smile_anna: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of anna climate device environment."""
@ -362,9 +368,10 @@ async def test_anna_2_climate_entity_attributes(
assert state.attributes[ATTR_TARGET_TEMP_LOW] == 20.5
@pytest.mark.parametrize("chosen_env", ["m_anna_heatpump_idle"], indirect=True)
async def test_anna_3_climate_entity_attributes(
hass: HomeAssistant,
mock_smile_anna_3: MagicMock,
mock_smile_anna: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of anna climate device environment."""
@ -378,6 +385,7 @@ async def test_anna_3_climate_entity_attributes(
]
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_climate_entity_climate_changes(
hass: HomeAssistant,
mock_smile_anna: MagicMock,

View File

@ -61,6 +61,7 @@ TOM = {
}
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_load_unload_config_entry(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
@ -80,6 +81,7 @@ async def test_load_unload_config_entry(
assert mock_config_entry.state is ConfigEntryState.NOT_LOADED
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
@pytest.mark.parametrize(
("side_effect", "entry_state"),
[
@ -109,6 +111,10 @@ async def test_gateway_config_entry_not_ready(
assert mock_config_entry.state is entry_state
@pytest.mark.parametrize("chosen_env", ["p1v4_442_single"], indirect=True)
@pytest.mark.parametrize(
"gateway_id", ["a455b61e52394b2db5081ce025a430f3"], indirect=True
)
async def test_device_in_dr(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
@ -131,6 +137,7 @@ async def test_device_in_dr(
assert device_entry.sw_version == "4.4.2"
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
@pytest.mark.parametrize(
("entitydata", "old_unique_id", "new_unique_id"),
[
@ -224,16 +231,17 @@ async def test_migrate_unique_id_relay(
assert entity_migrated.unique_id == new_unique_id
@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True)
async def test_update_device(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_smile_adam_2: MagicMock,
mock_smile_adam_heat_cool: MagicMock,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test a clean-up of the device_registry."""
data = mock_smile_adam_2.async_update.return_value
data = mock_smile_adam_heat_cool.async_update.return_value
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)

View File

@ -16,6 +16,7 @@ from homeassistant.exceptions import ServiceValidationError
from tests.common import MockConfigEntry
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_number_entities(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
) -> None:
@ -25,6 +26,7 @@ async def test_anna_number_entities(
assert float(state.state) == 60.0
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_max_boiler_temp_change(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
) -> None:
@ -45,19 +47,17 @@ async def test_anna_max_boiler_temp_change(
)
async def test_adam_number_entities(
hass: HomeAssistant, mock_smile_adam_2: MagicMock, init_integration: MockConfigEntry
@pytest.mark.parametrize("chosen_env", ["m_adam_heating"], indirect=True)
async def test_adam_dhw_setpoint_change(
hass: HomeAssistant,
mock_smile_adam_heat_cool: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of a number."""
"""Test changing of number entities."""
state = hass.states.get("number.opentherm_domestic_hot_water_setpoint")
assert state
assert float(state.state) == 60.0
async def test_adam_dhw_setpoint_change(
hass: HomeAssistant, mock_smile_adam_2: MagicMock, init_integration: MockConfigEntry
) -> None:
"""Test changing of number entities."""
await hass.services.async_call(
NUMBER_DOMAIN,
SERVICE_SET_VALUE,
@ -68,8 +68,8 @@ async def test_adam_dhw_setpoint_change(
blocking=True,
)
assert mock_smile_adam_2.set_number.call_count == 1
mock_smile_adam_2.set_number.assert_called_with(
assert mock_smile_adam_heat_cool.set_number.call_count == 1
mock_smile_adam_heat_cool.set_number.assert_called_with(
"056ee145a816487eaa69243c3280f8bf", "max_dhw_temperature", 55.0
)

View File

@ -50,8 +50,11 @@ async def test_adam_change_select_entity(
)
@pytest.mark.parametrize("chosen_env", ["m_adam_cooling"], indirect=True)
async def test_adam_select_regulation_mode(
hass: HomeAssistant, mock_smile_adam_3: MagicMock, init_integration: MockConfigEntry
hass: HomeAssistant,
mock_smile_adam_heat_cool: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test a regulation_mode select.
@ -73,8 +76,8 @@ async def test_adam_select_regulation_mode(
},
blocking=True,
)
assert mock_smile_adam_3.set_select.call_count == 1
mock_smile_adam_3.set_select.assert_called_with(
assert mock_smile_adam_heat_cool.set_select.call_count == 1
mock_smile_adam_heat_cool.set_select.assert_called_with(
"select_regulation_mode",
"bc93488efab249e5bc54fd7e175a6f91",
"heating",
@ -91,6 +94,7 @@ async def test_legacy_anna_select_entities(
assert not hass.states.get("select.anna_thermostat_schedule")
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_adam_select_unavailable_regulation_mode(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
) -> None:

View File

@ -41,7 +41,9 @@ async def test_adam_climate_sensor_entities(
async def test_adam_climate_sensor_entity_2(
hass: HomeAssistant, mock_smile_adam_4: MagicMock, init_integration: MockConfigEntry
hass: HomeAssistant,
mock_smile_adam_jip: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of climate related sensor entities."""
state = hass.states.get("sensor.woonkamer_humidity")
@ -52,7 +54,7 @@ async def test_adam_climate_sensor_entity_2(
async def test_unique_id_migration_humidity(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
mock_smile_adam_4: MagicMock,
mock_smile_adam_jip: MagicMock,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test unique ID migration of -relative_humidity to -humidity."""
@ -92,6 +94,7 @@ async def test_unique_id_migration_humidity(
assert entity_entry.unique_id == "f61f1a2535f54f52ad006a3d18e459ca-battery"
@pytest.mark.parametrize("chosen_env", ["anna_heatpump_heating"], indirect=True)
async def test_anna_as_smt_climate_sensor_entities(
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
) -> None:
@ -113,6 +116,10 @@ async def test_anna_as_smt_climate_sensor_entities(
assert float(state.state) == 86.0
@pytest.mark.parametrize("chosen_env", ["p1v4_442_single"], indirect=True)
@pytest.mark.parametrize(
"gateway_id", ["a455b61e52394b2db5081ce025a430f3"], indirect=True
)
async def test_p1_dsmr_sensor_entities(
hass: HomeAssistant, mock_smile_p1: MagicMock, init_integration: MockConfigEntry
) -> None:
@ -137,11 +144,15 @@ async def test_p1_dsmr_sensor_entities(
assert not state
@pytest.mark.parametrize("chosen_env", ["p1v4_442_triple"], indirect=True)
@pytest.mark.parametrize(
"gateway_id", ["03e65b16e4b247a29ae0d75a78cb492e"], indirect=True
)
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_p1_3ph_dsmr_sensor_entities(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
mock_smile_p1_2: MagicMock,
mock_smile_p1: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test creation of power related sensor entities."""
@ -163,10 +174,14 @@ async def test_p1_3ph_dsmr_sensor_entities(
assert float(state.state) == 233.2
@pytest.mark.parametrize("chosen_env", ["p1v4_442_triple"], indirect=True)
@pytest.mark.parametrize(
"gateway_id", ["03e65b16e4b247a29ae0d75a78cb492e"], indirect=True
)
async def test_p1_3ph_dsmr_sensor_disabled_entities(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
mock_smile_p1_2: MagicMock,
mock_smile_p1: MagicMock,
init_integration: MockConfigEntry,
) -> None:
"""Test disabled power related sensor entities intent."""