def test_extract_entities_with_variables(self): """Test extract entities function with variables and entities stuff.""" self.assertEqual( ['input_boolean.switch'], template.extract_entities( "{{ is_state('input_boolean.switch', 'off') }}", {})) self.assertEqual( ['trigger.entity_id'], template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {})) self.assertEqual( MATCH_ALL, template.extract_entities( "{{ is_state(data, 'off') }}", {})) self.assertEqual( ['input_boolean.switch'], template.extract_entities( "{{ is_state(data, 'off') }}", {'data': 'input_boolean.switch'})) self.assertEqual( ['input_boolean.switch'], template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {'trigger': {'entity_id': 'input_boolean.switch'}}))
def test_extract_entities_with_variables(self): """Test extract entities function with variables and entities stuff.""" self.assertEqual(['input_boolean.switch'], template.extract_entities( "{{ is_state('input_boolean.switch', 'off') }}", {})) self.assertEqual(['trigger.entity_id'], template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {})) self.assertEqual( MATCH_ALL, template.extract_entities("{{ is_state(data, 'off') }}", {})) self.assertEqual(['input_boolean.switch'], template.extract_entities( "{{ is_state(data, 'off') }}", {'data': 'input_boolean.switch'})) self.assertEqual( ['input_boolean.switch'], template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {'trigger': { 'entity_id': 'input_boolean.switch' }}))
def test_extract_entities_none_exclude_stuff(self): """Test extract entities function with none or exclude stuff.""" self.assertEqual(MATCH_ALL, template.extract_entities(None)) self.assertEqual( MATCH_ALL, template.extract_entities("{{ closest(states.zone.far_away, " "states.test_domain).entity_id }}") ) self.assertEqual(MATCH_ALL, template.extract_entities('{{ distance("123", states.test_object_2) }}'))
def test_extract_entities_no_match_entities(self): """Test extract entities function with none entities stuff.""" assert MATCH_ALL == \ template.extract_entities( "{{ value_json.tst | timestamp_custom('%Y' True) }}") assert MATCH_ALL == \ template.extract_entities(""" {% for state in states.sensor %} {{ state.entity_id }}={{ state.state }},d {% endfor %} """)
def test_extract_entities_none_exclude_stuff(hass): """Test extract entities function with none or exclude stuff.""" assert template.extract_entities(None) == [] assert template.extract_entities("mdi:water") == [] assert template.extract_entities( '{{ closest(states.zone.far_away, ' 'states.test_domain).entity_id }}') == MATCH_ALL assert template.extract_entities( '{{ distance("123", states.test_object_2) }}') == MATCH_ALL
def test_extract_entities_none_exclude_stuff(self): """Test extract entities function with none or exclude stuff.""" self.assertEqual(MATCH_ALL, template.extract_entities(None)) self.assertEqual( MATCH_ALL, template.extract_entities('{{ closest(states.zone.far_away, ' 'states.test_domain).entity_id }}')) self.assertEqual( MATCH_ALL, template.extract_entities( '{{ distance("123", states.test_object_2) }}'))
def test_extract_entities_none_exclude_stuff(self): """Test extract entities function with none or exclude stuff.""" assert [] == template.extract_entities(None) assert [] == template.extract_entities("mdi:water") assert MATCH_ALL == \ template.extract_entities( '{{ closest(states.zone.far_away, ' 'states.test_domain).entity_id }}') assert MATCH_ALL == \ template.extract_entities( '{{ distance("123", states.test_object_2) }}')
def test_extract_entities_match_entities(self): """Test extract entities function with entities stuff.""" assert ['device_tracker.phone_1'] == \ template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% else %} Hercules is at {{ states('device_tracker.phone_1') }}. {% endif %} """) assert ['binary_sensor.garage_door'] == \ template.extract_entities(""" {{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} """) assert ['binary_sensor.garage_door'] == \ template.extract_entities(""" {{ states("binary_sensor.garage_door") }} """) assert ['device_tracker.phone_2'] == \ template.extract_entities(""" {{ is_state_attr('device_tracker.phone_2', 'battery', 40) }} """) assert sorted([ 'device_tracker.phone_1', 'device_tracker.phone_2', ]) == \ sorted(template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% elif states.device_tracker.phone_2.attributes.battery < 40 %} Hercules you power goes done!. {% endif %} """)) assert sorted([ 'sensor.pick_humidity', 'sensor.pick_temperature', ]) == \ sorted(template.extract_entities(""" {{ states.sensor.pick_temperature.state ~ „°C (“ ~ states.sensor.pick_humidity.state ~ „ %“ }} """)) assert sorted([ 'sensor.luftfeuchtigkeit_mean', 'input_number.luftfeuchtigkeit', ]) == \ sorted(template.extract_entities( "{% if (states('sensor.luftfeuchtigkeit_mean') | int)" " > (states('input_number.luftfeuchtigkeit') | int +1.5)" " %}true{% endif %}" ))
def test_extract_entities_no_match_entities(hass): """Test extract entities function with none entities stuff.""" assert template.extract_entities( "{{ value_json.tst | timestamp_custom('%Y' True) }}") == MATCH_ALL info = render_to_info(hass, """ {% for state in states.sensor %} {{ state.entity_id }}={{ state.state }},d {% endfor %} """) assert_result_info(info, '', domains=['sensor'])
def test_extract_entities_with_variables(self): """Test extract entities function with variables and entities stuff.""" assert ['input_boolean.switch'] == \ template.extract_entities( "{{ is_state('input_boolean.switch', 'off') }}", {}) assert ['trigger.entity_id'] == \ template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {}) assert MATCH_ALL == \ template.extract_entities( "{{ is_state(data, 'off') }}", {}) assert ['input_boolean.switch'] == \ template.extract_entities( "{{ is_state(data, 'off') }}", {'data': 'input_boolean.switch'}) assert ['input_boolean.switch'] == \ template.extract_entities( "{{ is_state(trigger.entity_id, 'off') }}", {'trigger': {'entity_id': 'input_boolean.switch'}}) assert MATCH_ALL == \ template.extract_entities( "{{ is_state('media_player.' ~ where , 'playing') }}", {'where': 'livingroom'})
def test_extract_entities_match_entities(hass): """Test extract entities function with entities stuff.""" assert (template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% else %} Hercules is at {{ states('device_tracker.phone_1') }}. {% endif %} """) == ["device_tracker.phone_1"]) assert (template.extract_entities(""" {{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} """) == ["binary_sensor.garage_door"]) assert (template.extract_entities(""" {{ states("binary_sensor.garage_door") }} """) == ["binary_sensor.garage_door"]) hass.states.async_set("device_tracker.phone_2", "not_home", {"battery": 20}) assert (template.extract_entities(""" {{ is_state_attr('device_tracker.phone_2', 'battery', 40) }} """) == ["device_tracker.phone_2"]) assert sorted(["device_tracker.phone_1", "device_tracker.phone_2"]) == sorted( template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% elif states.device_tracker.phone_2.attributes.battery < 40 %} Hercules you power goes done!. {% endif %} """)) assert sorted(["sensor.pick_humidity", "sensor.pick_temperature"]) == sorted( template.extract_entities(""" {{ states.sensor.pick_temperature.state ~ „°C (“ ~ states.sensor.pick_humidity.state ~ „ %“ }} """)) assert sorted( ["sensor.luftfeuchtigkeit_mean", "input_number.luftfeuchtigkeit"]) == sorted( template.extract_entities( "{% if (states('sensor.luftfeuchtigkeit_mean') | int)" " > (states('input_number.luftfeuchtigkeit') | int +1.5)" " %}true{% endif %}"))
def test_extract_entities_match_entities(self): """Test extract entities function with entities stuff.""" self.assertListEqual( ['device_tracker.phone_1'], template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% else %} Hercules is at {{ states('device_tracker.phone_1') }}. {% endif %} """)) self.assertListEqual( ['binary_sensor.garage_door'], template.extract_entities(""" {{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} """)) self.assertListEqual( ['binary_sensor.garage_door'], template.extract_entities(""" {{ states("binary_sensor.garage_door") }} """)) self.assertListEqual( ['device_tracker.phone_2'], template.extract_entities(""" is_state_attr('device_tracker.phone_2', 'battery', 40) """)) self.assertListEqual( sorted([ 'device_tracker.phone_1', 'device_tracker.phone_2', ]), sorted(template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% elif states.device_tracker.phone_2.attributes.battery < 40 %} Hercules you power goes done!. {% endif %} """))) self.assertListEqual( sorted([ 'sensor.pick_humidity', 'sensor.pick_temperature', ]), sorted(template.extract_entities(""" {{ states.sensor.pick_temperature.state ~ „°C (“ ~ states.sensor.pick_humidity.state ~ „ %“ }} """)))
def test_extract_entities_match_entities(self): """Test extract entities function with entities stuff.""" self.assertListEqual(['device_tracker.phone_1'], template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% else %} Hercules is at {{ states('device_tracker.phone_1') }}. {% endif %} """)) self.assertListEqual(['binary_sensor.garage_door'], template.extract_entities(""" {{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} """)) self.assertListEqual(['binary_sensor.garage_door'], template.extract_entities(""" {{ states("binary_sensor.garage_door") }} """)) self.assertListEqual(['device_tracker.phone_2'], template.extract_entities(""" is_state_attr('device_tracker.phone_2', 'battery', 40) """)) self.assertListEqual( sorted([ 'device_tracker.phone_1', 'device_tracker.phone_2', ]), sorted( template.extract_entities(""" {% if is_state('device_tracker.phone_1', 'home') %} Ha, Hercules is home! {% elif states.device_tracker.phone_2.attributes.battery < 40 %} Hercules you power goes done!. {% endif %} """))) self.assertListEqual( sorted([ 'sensor.pick_humidity', 'sensor.pick_temperature', ]), sorted( template.extract_entities(""" {{ states.sensor.pick_temperature.state ~ „°C (“ ~ states.sensor.pick_humidity.state ~ „ %“ }} """)))