"""Test the entity values helper.""" from collections import OrderedDict from homeassistant.helpers.entity_values import EntityValues as EV ent = 'test.test' def test_override_single_value(): """Test values with exact match.""" store = EV({ent: {'key': 'value'}}) assert store.get(ent) == {'key': 'value'} assert len(store._cache) == 1 assert store.get(ent) == {'key': 'value'} assert len(store._cache) == 1 def test_override_by_domain(): """Test values with domain match.""" store = EV(domain={'test': {'key': 'value'}}) assert store.get(ent) == {'key': 'value'} def test_override_by_glob(): """Test values with glob match.""" store = EV(glob={'test.?e*': {'key': 'value'}}) assert store.get(ent) == {'key': 'value'} def test_glob_overrules_domain(): """Test domain overrules glob match.""" store = EV( domain={'test': {'key': 'domain'}}, glob={'test.?e*': {'key': 'glob'}}) assert store.get(ent) == {'key': 'glob'} def test_exact_overrules_domain(): """Test exact overrules domain match.""" store = EV( exact={'test.test': {'key': 'exact'}}, domain={'test': {'key': 'domain'}}, glob={'test.?e*': {'key': 'glob'}}) assert store.get(ent) == {'key': 'exact'} def test_merging_values(): """Test merging glob, domain and exact configs.""" store = EV( exact={'test.test': {'exact_key': 'exact'}}, domain={'test': {'domain_key': 'domain'}}, glob={'test.?e*': {'glob_key': 'glob'}}) assert store.get(ent) == { 'exact_key': 'exact', 'domain_key': 'domain', 'glob_key': 'glob', } def test_glob_order(): """Test merging glob, domain and exact configs.""" glob = OrderedDict() glob['test.*est'] = {"value": "first"} glob['test.*'] = {"value": "second"} store = EV(glob=glob) assert store.get(ent) == { 'value': 'second' }