mirror of
https://github.com/esphome/esphome.git
synced 2026-10-18 20:22:49 +00:00
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
"""Tests for the button schema presets."""
|
|
|
|
from collections.abc import Callable
|
|
|
|
import pytest
|
|
import voluptuous as vol
|
|
|
|
from esphome.components import button
|
|
import esphome.config_validation as cv
|
|
from esphome.const import (
|
|
CONF_DEVICE_CLASS,
|
|
CONF_ENTITY_CATEGORY,
|
|
CONF_ICON,
|
|
DEVICE_CLASS_RESTART,
|
|
ENTITY_CATEGORY_CONFIG,
|
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
|
ICON_DATABASE,
|
|
ICON_RESTART,
|
|
ICON_RESTART_ALERT,
|
|
)
|
|
|
|
MyButton = button.button_ns.class_("MyButton", button.Button)
|
|
|
|
|
|
def _defaults(schema: cv.Schema) -> dict[str, str]:
|
|
return {
|
|
str(key): key.default()
|
|
for key in schema.schema
|
|
if str(key) in (CONF_DEVICE_CLASS, CONF_ENTITY_CATEGORY, CONF_ICON)
|
|
and key.default is not vol.UNDEFINED
|
|
}
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("preset", "expected"),
|
|
[
|
|
(
|
|
button.factory_reset_button_schema,
|
|
{
|
|
CONF_DEVICE_CLASS: DEVICE_CLASS_RESTART,
|
|
CONF_ENTITY_CATEGORY: ENTITY_CATEGORY_CONFIG,
|
|
CONF_ICON: ICON_RESTART_ALERT,
|
|
},
|
|
),
|
|
(
|
|
button.restart_button_schema,
|
|
{
|
|
CONF_DEVICE_CLASS: DEVICE_CLASS_RESTART,
|
|
CONF_ENTITY_CATEGORY: ENTITY_CATEGORY_DIAGNOSTIC,
|
|
CONF_ICON: ICON_RESTART,
|
|
},
|
|
),
|
|
(
|
|
button.query_button_schema,
|
|
{
|
|
CONF_ENTITY_CATEGORY: ENTITY_CATEGORY_DIAGNOSTIC,
|
|
CONF_ICON: ICON_DATABASE,
|
|
},
|
|
),
|
|
],
|
|
)
|
|
def test_preset_defaults(
|
|
preset: Callable[..., cv.Schema], expected: dict[str, str]
|
|
) -> None:
|
|
assert _defaults(preset(MyButton)) == expected
|