async def test_two_platforms_add_same_entity(hass): """Test two platforms in the same domain adding an entity with the same name.""" entity_platform1 = MockEntityPlatform( hass, domain="mock_integration", platform_name="mock_platform", platform=None ) entity1 = SlowEntity(name="entity_1") entity_platform2 = MockEntityPlatform( hass, domain="mock_integration", platform_name="mock_platform", platform=None ) entity2 = SlowEntity(name="entity_1") await asyncio.gather( entity_platform1.async_add_entities([entity1]), entity_platform2.async_add_entities([entity2]), ) entities = [] @callback def handle_service(entity, *_): entities.append(entity) entity_platform1.async_register_entity_service("hello", {}, handle_service) await hass.services.async_call( "mock_platform", "hello", {"entity_id": "all"}, blocking=True ) assert len(entities) == 2 assert {entity1.entity_id, entity2.entity_id} == { "mock_integration.entity_1", "mock_integration.entity_1_2", } assert entity1 in entities assert entity2 in entities
async def test_platforms_sharing_services(hass): """Test platforms share services.""" entity_platform1 = MockEntityPlatform( hass, domain="mock_integration", platform_name="mock_platform", platform=None ) entity1 = MockEntity(entity_id="mock_integration.entity_1") await entity_platform1.async_add_entities([entity1]) entity_platform2 = MockEntityPlatform( hass, domain="mock_integration", platform_name="mock_platform", platform=None ) entity2 = MockEntity(entity_id="mock_integration.entity_2") await entity_platform2.async_add_entities([entity2]) entities = [] @callback def handle_service(entity, data): entities.append(entity) entity_platform1.async_register_entity_service("hello", {}, handle_service) entity_platform2.async_register_entity_service( "hello", {}, Mock(side_effect=AssertionError("Should not be called")) ) await hass.services.async_call( "mock_platform", "hello", {"entity_id": "all"}, blocking=True ) assert len(entities) == 2 assert entity1 in entities assert entity2 in entities