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 data[ATTR_OPERATION_LIST] = self.operation_list
return data 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: if WaterHeaterEntityFeature.OPERATION_MODE in supported_features:
data[ATTR_OPERATION_MODE] = self.current_operation 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 import water_heater
from homeassistant.components.water_heater import ( from homeassistant.components.water_heater import (
ATTR_OPERATION_LIST,
ATTR_OPERATION_MODE,
SET_TEMPERATURE_SCHEMA, SET_TEMPERATURE_SCHEMA,
WaterHeaterEntity, WaterHeaterEntity,
WaterHeaterEntityFeature, WaterHeaterEntityFeature,
) )
from homeassistant.const import UnitOfTemperature
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import async_mock_service, import_and_test_deprecated_constant_enum 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.""" """Test deprecated supported features ints."""
class MockWaterHeaterEntity(WaterHeaterEntity): class MockWaterHeaterEntity(WaterHeaterEntity):
@property _attr_operation_list = ["mode1", "mode2"]
def supported_features(self) -> int: _attr_temperature_unit = UnitOfTemperature.CELSIUS
"""Return supported features.""" _attr_current_operation = "mode1"
return 1 _attr_supported_features = WaterHeaterEntityFeature.OPERATION_MODE.value
entity = MockWaterHeaterEntity() 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 "MockWaterHeaterEntity" in caplog.text
assert "is using deprecated supported features values" in caplog.text assert "is using deprecated supported features values" in caplog.text
assert "Instead it should use" 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() 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 "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"]