Fix missing backwards compatibility layer for water_heater supported_features (#107091)

This commit is contained in:
J. Nick Koston 2024-01-04 02:21:52 -10:00 committed by GitHub
parent 10f5ce2dc0
commit 1a08bcce77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 10 deletions

View File

@ -241,7 +241,7 @@ class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
),
}
if WaterHeaterEntityFeature.OPERATION_MODE in self.supported_features:
if WaterHeaterEntityFeature.OPERATION_MODE in self.supported_features_compat:
data[ATTR_OPERATION_LIST] = self.operation_list
return data
@ -277,7 +277,7 @@ class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
),
}
supported_features = self.supported_features
supported_features = self.supported_features_compat
if WaterHeaterEntityFeature.OPERATION_MODE in supported_features:
data[ATTR_OPERATION_MODE] = self.current_operation

View File

@ -8,10 +8,13 @@ import voluptuous as vol
from homeassistant.components import water_heater
from homeassistant.components.water_heater import (
ATTR_OPERATION_LIST,
ATTR_OPERATION_MODE,
SET_TEMPERATURE_SCHEMA,
WaterHeaterEntity,
WaterHeaterEntityFeature,
)
from homeassistant.const import UnitOfTemperature
from homeassistant.core import HomeAssistant
from tests.common import async_mock_service, import_and_test_deprecated_constant_enum
@ -117,21 +120,26 @@ def test_deprecated_constants(
)
def test_deprecated_supported_features_ints(caplog: pytest.LogCaptureFixture) -> None:
def test_deprecated_supported_features_ints(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test deprecated supported features ints."""
class MockWaterHeaterEntity(WaterHeaterEntity):
@property
def supported_features(self) -> int:
"""Return supported features."""
return 1
_attr_operation_list = ["mode1", "mode2"]
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_current_operation = "mode1"
_attr_supported_features = WaterHeaterEntityFeature.OPERATION_MODE.value
entity = MockWaterHeaterEntity()
assert entity.supported_features_compat is WaterHeaterEntityFeature(1)
entity.hass = hass
assert entity.supported_features_compat is WaterHeaterEntityFeature(2)
assert "MockWaterHeaterEntity" in caplog.text
assert "is using deprecated supported features values" in caplog.text
assert "Instead it should use" in caplog.text
assert "WaterHeaterEntityFeature.TARGET_TEMPERATURE" in caplog.text
assert "WaterHeaterEntityFeature.OPERATION_MODE" in caplog.text
caplog.clear()
assert entity.supported_features_compat is WaterHeaterEntityFeature(1)
assert entity.supported_features_compat is WaterHeaterEntityFeature(2)
assert "is using deprecated supported features values" not in caplog.text
assert entity.state_attributes[ATTR_OPERATION_MODE] == "mode1"
assert entity.capability_attributes[ATTR_OPERATION_LIST] == ["mode1", "mode2"]