From bca527c0e5f7549fed3cd3840fc96703f6cc53c2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 11 Feb 2018 10:28:25 -0800 Subject: [PATCH 1/2] Respect entity namespace for entity registry --- homeassistant/helpers/entity_platform.py | 4 +++ tests/helpers/test_entity_platform.py | 35 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/homeassistant/helpers/entity_platform.py b/homeassistant/helpers/entity_platform.py index 5c1d437c7cf35..c11190411fc01 100644 --- a/homeassistant/helpers/entity_platform.py +++ b/homeassistant/helpers/entity_platform.py @@ -209,6 +209,10 @@ def _async_add_entity(self, entity, update_before_add, component_entities, else: suggested_object_id = entity.name + if self.entity_namespace is not None: + suggested_object_id = '{} {}'.format( + self.entity_namespace, suggested_object_id) + entry = registry.async_get_or_create( self.domain, self.platform_name, entity.unique_id, suggested_object_id=suggested_object_id) diff --git a/tests/helpers/test_entity_platform.py b/tests/helpers/test_entity_platform.py index e398349cf7a4e..ed9f4e8e51d45 100644 --- a/tests/helpers/test_entity_platform.py +++ b/tests/helpers/test_entity_platform.py @@ -21,6 +21,31 @@ DOMAIN = "test_domain" +class MockEntityPlatform(entity_platform.EntityPlatform): + """Mock class with some mock defaults.""" + + def __init__( + self, *, hass, + logger=None, + domain='test', + platform_name='test_platform', + scan_interval=timedelta(seconds=15), + parallel_updates=0, + entity_namespace=None, + async_entities_added_callback=lambda: None + ): + """Initialize a mock entity platform.""" + super().__init__( + hass=hass, + logger=logger, + domain=domain, + platform_name=platform_name, + scan_interval=scan_interval, + parallel_updates=parallel_updates, + entity_namespace=entity_namespace, + async_entities_added_callback=async_entities_added_callback, + ) + class TestHelpersEntityPlatform(unittest.TestCase): """Test homeassistant.helpers.entity_component module.""" @@ -454,3 +479,13 @@ def test_overriding_name_from_registry(hass): state = hass.states.get('test_domain.world') assert state is not None assert state.name == 'Overridden' + + +@asyncio.coroutine +def test_registry_respect_entity_namespace(hass): + """Test that the registry respects entity namespace.""" + mock_registry(hass) + platform = MockEntityPlatform(hass=hass, entity_namespace='ns') + entity = MockEntity(unique_id='1234', name='Device Name') + yield from platform.async_add_entities([entity]) + assert entity.entity_id == 'test.ns_device_name' From cbbfc78d5d19f9a830c13ec29d10c4b3180c865d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 11 Feb 2018 10:57:22 -0800 Subject: [PATCH 2/2] Lint --- tests/helpers/test_entity_platform.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/helpers/test_entity_platform.py b/tests/helpers/test_entity_platform.py index ed9f4e8e51d45..a54a6de511a0d 100644 --- a/tests/helpers/test_entity_platform.py +++ b/tests/helpers/test_entity_platform.py @@ -46,6 +46,7 @@ def __init__( async_entities_added_callback=async_entities_added_callback, ) + class TestHelpersEntityPlatform(unittest.TestCase): """Test homeassistant.helpers.entity_component module."""