mirror of
https://github.com/home-assistant/core.git
synced 2026-02-15 07:36:16 +00:00
Fix trigger selectors (#160519)
This commit is contained in:
@@ -19,6 +19,10 @@
|
||||
selector:
|
||||
choose:
|
||||
choices:
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
entity:
|
||||
selector:
|
||||
entity:
|
||||
@@ -27,14 +31,11 @@
|
||||
- input_number
|
||||
- number
|
||||
- sensor
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
translation_key: number_or_entity
|
||||
|
||||
.trigger_threshold_type: &trigger_threshold_type
|
||||
required: true
|
||||
default: above
|
||||
selector:
|
||||
select:
|
||||
options:
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
selector:
|
||||
choose:
|
||||
choices:
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
entity:
|
||||
selector:
|
||||
entity:
|
||||
@@ -27,14 +31,11 @@
|
||||
- input_number
|
||||
- number
|
||||
- sensor
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
translation_key: number_or_entity
|
||||
|
||||
.trigger_threshold_type: &trigger_threshold_type
|
||||
required: true
|
||||
default: above
|
||||
selector:
|
||||
select:
|
||||
options:
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
selector:
|
||||
choose:
|
||||
choices:
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
entity:
|
||||
selector:
|
||||
entity:
|
||||
@@ -27,10 +31,6 @@
|
||||
- input_number
|
||||
- number
|
||||
- sensor
|
||||
number:
|
||||
selector:
|
||||
number:
|
||||
mode: box
|
||||
translation_key: number_or_entity
|
||||
|
||||
turned_on: *trigger_common
|
||||
@@ -48,6 +48,7 @@ brightness_crossed_threshold:
|
||||
behavior: *trigger_behavior
|
||||
threshold_type:
|
||||
required: true
|
||||
default: above
|
||||
selector:
|
||||
select:
|
||||
options:
|
||||
|
||||
@@ -683,7 +683,7 @@ NUMERICAL_ATTRIBUTE_CROSSED_THRESHOLD_SCHEMA = ENTITY_STATE_TRIGGER_SCHEMA.exten
|
||||
),
|
||||
vol.Optional(CONF_LOWER_LIMIT): _number_or_entity,
|
||||
vol.Optional(CONF_UPPER_LIMIT): _number_or_entity,
|
||||
vol.Required(CONF_THRESHOLD_TYPE): ThresholdType,
|
||||
vol.Required(CONF_THRESHOLD_TYPE): vol.Coerce(ThresholdType),
|
||||
},
|
||||
_validate_range(CONF_LOWER_LIMIT, CONF_UPPER_LIMIT),
|
||||
_validate_limits_for_threshold_type,
|
||||
|
||||
@@ -40,7 +40,6 @@ from homeassistant.helpers.trigger import (
|
||||
CONF_UPPER_LIMIT,
|
||||
DATA_PLUGGABLE_ACTIONS,
|
||||
PluggableAction,
|
||||
ThresholdType,
|
||||
Trigger,
|
||||
TriggerActionRunner,
|
||||
_async_get_trigger_platform,
|
||||
@@ -1387,25 +1386,26 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
("trigger_options", "expected_result"),
|
||||
[
|
||||
# Valid configurations
|
||||
# Don't use the enum in tests to allow testing validation of strings when the source is JSON or YAML
|
||||
(
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.ABOVE, CONF_LOWER_LIMIT: 10},
|
||||
{CONF_THRESHOLD_TYPE: "above", CONF_LOWER_LIMIT: 10},
|
||||
does_not_raise(),
|
||||
),
|
||||
(
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.ABOVE, CONF_LOWER_LIMIT: "sensor.test"},
|
||||
{CONF_THRESHOLD_TYPE: "above", CONF_LOWER_LIMIT: "sensor.test"},
|
||||
does_not_raise(),
|
||||
),
|
||||
(
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BELOW, CONF_UPPER_LIMIT: 90},
|
||||
{CONF_THRESHOLD_TYPE: "below", CONF_UPPER_LIMIT: 90},
|
||||
does_not_raise(),
|
||||
),
|
||||
(
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BELOW, CONF_UPPER_LIMIT: "sensor.test"},
|
||||
{CONF_THRESHOLD_TYPE: "below", CONF_UPPER_LIMIT: "sensor.test"},
|
||||
does_not_raise(),
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_LOWER_LIMIT: 10,
|
||||
CONF_UPPER_LIMIT: 90,
|
||||
},
|
||||
@@ -1413,7 +1413,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_LOWER_LIMIT: 10,
|
||||
CONF_UPPER_LIMIT: "sensor.test",
|
||||
},
|
||||
@@ -1421,7 +1421,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_LOWER_LIMIT: "sensor.test",
|
||||
CONF_UPPER_LIMIT: 90,
|
||||
},
|
||||
@@ -1429,7 +1429,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_LOWER_LIMIT: "sensor.test",
|
||||
CONF_UPPER_LIMIT: "sensor.test",
|
||||
},
|
||||
@@ -1437,7 +1437,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE,
|
||||
CONF_THRESHOLD_TYPE: "outside",
|
||||
CONF_LOWER_LIMIT: 10,
|
||||
CONF_UPPER_LIMIT: 90,
|
||||
},
|
||||
@@ -1445,7 +1445,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE,
|
||||
CONF_THRESHOLD_TYPE: "outside",
|
||||
CONF_LOWER_LIMIT: 10,
|
||||
CONF_UPPER_LIMIT: "sensor.test",
|
||||
},
|
||||
@@ -1453,7 +1453,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE,
|
||||
CONF_THRESHOLD_TYPE: "outside",
|
||||
CONF_LOWER_LIMIT: "sensor.test",
|
||||
CONF_UPPER_LIMIT: 90,
|
||||
},
|
||||
@@ -1461,7 +1461,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE,
|
||||
CONF_THRESHOLD_TYPE: "outside",
|
||||
CONF_LOWER_LIMIT: "sensor.test",
|
||||
CONF_UPPER_LIMIT: "sensor.test",
|
||||
},
|
||||
@@ -1481,58 +1481,58 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
),
|
||||
(
|
||||
# Must provide lower limit for ABOVE
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.ABOVE},
|
||||
{CONF_THRESHOLD_TYPE: "above"},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide lower limit for ABOVE
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.ABOVE, CONF_UPPER_LIMIT: 90},
|
||||
{CONF_THRESHOLD_TYPE: "above", CONF_UPPER_LIMIT: 90},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper limit for BELOW
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BELOW},
|
||||
{CONF_THRESHOLD_TYPE: "below"},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper limit for BELOW
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BELOW, CONF_LOWER_LIMIT: 10},
|
||||
{CONF_THRESHOLD_TYPE: "below", CONF_LOWER_LIMIT: 10},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for BETWEEN
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN},
|
||||
{CONF_THRESHOLD_TYPE: "between"},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for BETWEEN
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN, CONF_LOWER_LIMIT: 10},
|
||||
{CONF_THRESHOLD_TYPE: "between", CONF_LOWER_LIMIT: 10},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for BETWEEN
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN, CONF_UPPER_LIMIT: 90},
|
||||
{CONF_THRESHOLD_TYPE: "between", CONF_UPPER_LIMIT: 90},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for OUTSIDE
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE},
|
||||
{CONF_THRESHOLD_TYPE: "outside"},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for OUTSIDE
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE, CONF_LOWER_LIMIT: 10},
|
||||
{CONF_THRESHOLD_TYPE: "outside", CONF_LOWER_LIMIT: 10},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must provide upper and lower limits for OUTSIDE
|
||||
{CONF_THRESHOLD_TYPE: ThresholdType.OUTSIDE, CONF_UPPER_LIMIT: 90},
|
||||
{CONF_THRESHOLD_TYPE: "outside", CONF_UPPER_LIMIT: 90},
|
||||
pytest.raises(vol.Invalid),
|
||||
),
|
||||
(
|
||||
# Must be valid entity id
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_ABOVE: "cat",
|
||||
CONF_BELOW: "dog",
|
||||
},
|
||||
@@ -1541,7 +1541,7 @@ async def test_numerical_state_attribute_changed_error_handling(
|
||||
(
|
||||
# Above must be smaller than below
|
||||
{
|
||||
CONF_THRESHOLD_TYPE: ThresholdType.BETWEEN,
|
||||
CONF_THRESHOLD_TYPE: "between",
|
||||
CONF_ABOVE: 90,
|
||||
CONF_BELOW: 10,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user