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'}}))
Beispiel #2
0
    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_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 %}
            """)
Beispiel #6
0
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
Beispiel #7
0
    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_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 %}"
            ))
Beispiel #11
0
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_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 %}"))
Beispiel #15
0
    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 ~ „ %“
}}
            """)))