Move check thresholds valid to platform schema in threshold (#129540)

This commit is contained in:
G Johansson 2024-11-09 10:50:11 +01:00 committed by GitHub
parent 8384100e1b
commit d11012b2b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 13 deletions

View File

@ -61,15 +61,29 @@ _LOGGER = logging.getLogger(__name__)
DEFAULT_NAME: Final = "Threshold"
PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
{
vol.Required(CONF_ENTITY_ID): cv.entity_id,
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
vol.Optional(CONF_HYSTERESIS, default=DEFAULT_HYSTERESIS): vol.Coerce(float),
vol.Optional(CONF_LOWER): vol.Coerce(float),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_UPPER): vol.Coerce(float),
}
def no_missing_threshold(value: dict) -> dict:
"""Validate data point list is greater than polynomial degrees."""
if value.get(CONF_LOWER) is None and value.get(CONF_UPPER) is None:
raise vol.Invalid("Lower or Upper thresholds are not provided")
return value
PLATFORM_SCHEMA = vol.All(
BINARY_SENSOR_PLATFORM_SCHEMA.extend(
{
vol.Required(CONF_ENTITY_ID): cv.entity_id,
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
vol.Optional(CONF_HYSTERESIS, default=DEFAULT_HYSTERESIS): vol.Coerce(
float
),
vol.Optional(CONF_LOWER): vol.Coerce(float),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_UPPER): vol.Coerce(float),
}
),
no_missing_threshold,
)
@ -126,9 +140,6 @@ async def async_setup_platform(
hysteresis: float = config[CONF_HYSTERESIS]
device_class: BinarySensorDeviceClass | None = config.get(CONF_DEVICE_CLASS)
if lower is None and upper is None:
raise ValueError("Lower or Upper thresholds not provided")
async_add_entities(
[
ThresholdSensor(

View File

@ -538,7 +538,7 @@ async def test_sensor_no_lower_upper(
await async_setup_component(hass, Platform.BINARY_SENSOR, config)
await hass.async_block_till_done()
assert "Lower or Upper thresholds not provided" in caplog.text
assert "Lower or Upper thresholds are not provided" in caplog.text
async def test_device_id(