Add test to stop action (#95376)

This commit is contained in:
Paulus Schoutsen 2023-06-27 13:38:30 -04:00 committed by GitHub
parent 8b25fd8563
commit 243abf32c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 11 deletions

View file

@ -1690,7 +1690,11 @@ _SCRIPT_STOP_SCHEMA = vol.Schema(
**SCRIPT_ACTION_BASE_SCHEMA,
vol.Required(CONF_STOP): vol.Any(None, string),
vol.Exclusive(CONF_ERROR, "error_or_response"): boolean,
vol.Exclusive(CONF_RESPONSE_VARIABLE, "error_or_response"): str,
vol.Exclusive(
CONF_RESPONSE_VARIABLE,
"error_or_response",
msg="not allowed to add a response to an error stop action",
): str,
}
)

View file

@ -1350,9 +1350,9 @@ def test_key_value_schemas_with_default() -> None:
schema({"mode": "{{ 1 + 1}}"})
def test_script(caplog: pytest.LogCaptureFixture) -> None:
"""Test script validation is user friendly."""
for data, msg in (
@pytest.mark.parametrize(
("config", "error"),
(
({"delay": "{{ invalid"}, "should be format 'HH:MM'"),
({"wait_template": "{{ invalid"}, "invalid template"),
({"condition": "invalid"}, "Unexpected value for condition: 'invalid'"),
@ -1366,20 +1366,33 @@ def test_script(caplog: pytest.LogCaptureFixture) -> None:
{"condition": "not", "conditions": "not a dynamic template"},
"Expected a dictionary",
),
({"event": None}, "string value is None for dictionary value @ data['event']"),
(
{"event": None},
r"string value is None for dictionary value @ data\['event'\]",
),
(
{"device_id": None},
"string value is None for dictionary value @ data['device_id']",
r"string value is None for dictionary value @ data\['device_id'\]",
),
(
{"scene": "light.kitchen"},
"Entity ID 'light.kitchen' does not belong to domain 'scene'",
),
):
with pytest.raises(vol.Invalid) as excinfo:
cv.script_action(data)
assert msg in str(excinfo.value)
(
{
"alias": "stop step",
"stop": "In the name of love",
"error": True,
"response_variable": "response-value",
},
"not allowed to add a response to an error stop action",
),
),
)
def test_script(caplog: pytest.LogCaptureFixture, config: dict, error: str) -> None:
"""Test script validation is user friendly."""
with pytest.raises(vol.Invalid, match=error):
cv.script_action(config)
def test_whitespace() -> None: