Fix extracting entity and device IDs from scripts (#44048)

* Fix extracting entity and device IDs from scripts

* Fix extracting from data_template
This commit is contained in:
Paulus Schoutsen 2020-12-08 13:06:29 +01:00 committed by GitHub
parent 0b7b6b1d81
commit ac2af69d26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 86 additions and 27 deletions

View file

@ -1338,6 +1338,18 @@ async def test_referenced_entities(hass):
"service": "test.script",
"data": {"entity_id": "{{ 'light.service_template' }}"},
},
{
"service": "test.script",
"entity_id": "light.direct_entity_referenced",
},
{
"service": "test.script",
"target": {"entity_id": "light.entity_in_target"},
},
{
"service": "test.script",
"data_template": {"entity_id": "light.entity_in_data_template"},
},
{
"condition": "state",
"entity_id": "sensor.condition",
@ -1357,6 +1369,9 @@ async def test_referenced_entities(hass):
"light.service_list",
"sensor.condition",
"scene.hello",
"light.direct_entity_referenced",
"light.entity_in_target",
"light.entity_in_data_template",
}
# Test we cache results.
assert script_obj.referenced_entities is script_obj.referenced_entities
@ -1374,12 +1389,36 @@ async def test_referenced_devices(hass):
"device_id": "condition-dev-id",
"domain": "switch",
},
{
"service": "test.script",
"data": {"device_id": "data-string-id"},
},
{
"service": "test.script",
"data_template": {"device_id": "data-template-string-id"},
},
{
"service": "test.script",
"target": {"device_id": "target-string-id"},
},
{
"service": "test.script",
"target": {"device_id": ["target-list-id-1", "target-list-id-2"]},
},
]
),
"Test Name",
"test_domain",
)
assert script_obj.referenced_devices == {"script-dev-id", "condition-dev-id"}
assert script_obj.referenced_devices == {
"script-dev-id",
"condition-dev-id",
"data-string-id",
"data-template-string-id",
"target-string-id",
"target-list-id-1",
"target-list-id-2",
}
# Test we cache results.
assert script_obj.referenced_devices is script_obj.referenced_devices