diff --git a/tests/components/wemo/entity_test_helpers.py b/tests/components/wemo/entity_test_helpers.py index c3d671d1fca..4ca11c11100 100644 --- a/tests/components/wemo/entity_test_helpers.py +++ b/tests/components/wemo/entity_test_helpers.py @@ -134,3 +134,35 @@ async def test_avaliable_after_update( pywemo_registry.callbacks[pywemo_device.name](pywemo_device, "", "") await hass.async_block_till_done() assert hass.states.get(wemo_entity.entity_id).state == STATE_ON + + +class EntityTestHelpers: + """Common state update helpers.""" + + async def test_async_update_locked_multiple_updates( + self, hass, pywemo_device, wemo_entity + ): + """Test that two hass async_update state updates do not proceed at the same time.""" + await test_async_update_locked_multiple_updates( + hass, pywemo_device, wemo_entity + ) + + async def test_async_update_locked_multiple_callbacks( + self, hass, pywemo_device, wemo_entity + ): + """Test that two device callback state updates do not proceed at the same time.""" + await test_async_update_locked_multiple_callbacks( + hass, pywemo_device, wemo_entity + ) + + async def test_async_update_locked_callback_and_update( + self, hass, pywemo_device, wemo_entity + ): + """Test that a callback and a state update request can't both happen at the same time. + + When a state update is received via a callback from the device at the same time + as hass is calling `async_update`, verify that only one of the updates proceeds. + """ + await test_async_update_locked_callback_and_update( + hass, pywemo_device, wemo_entity + ) diff --git a/tests/components/wemo/test_binary_sensor.py b/tests/components/wemo/test_binary_sensor.py index 26e4981203d..481a6348688 100644 --- a/tests/components/wemo/test_binary_sensor.py +++ b/tests/components/wemo/test_binary_sensor.py @@ -13,39 +13,7 @@ from homeassistant.components.wemo.binary_sensor import ( from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON from homeassistant.setup import async_setup_component -from . import entity_test_helpers - - -class EntityTestHelpers: - """Common state update helpers.""" - - async def test_async_update_locked_multiple_updates( - self, hass, pywemo_device, wemo_entity - ): - """Test that two hass async_update state updates do not proceed at the same time.""" - await entity_test_helpers.test_async_update_locked_multiple_updates( - hass, pywemo_device, wemo_entity - ) - - async def test_async_update_locked_multiple_callbacks( - self, hass, pywemo_device, wemo_entity - ): - """Test that two device callback state updates do not proceed at the same time.""" - await entity_test_helpers.test_async_update_locked_multiple_callbacks( - hass, pywemo_device, wemo_entity - ) - - async def test_async_update_locked_callback_and_update( - self, hass, pywemo_device, wemo_entity - ): - """Test that a callback and a state update request can't both happen at the same time. - - When a state update is received via a callback from the device at the same time - as hass is calling `async_update`, verify that only one of the updates proceeds. - """ - await entity_test_helpers.test_async_update_locked_callback_and_update( - hass, pywemo_device, wemo_entity - ) +from .entity_test_helpers import EntityTestHelpers class TestMotion(EntityTestHelpers): diff --git a/tests/components/wemo/test_sensor.py b/tests/components/wemo/test_sensor.py index eb322d469cd..305aad6102c 100644 --- a/tests/components/wemo/test_sensor.py +++ b/tests/components/wemo/test_sensor.py @@ -9,7 +9,7 @@ from homeassistant.components.homeassistant import ( from homeassistant.const import ATTR_ENTITY_ID, STATE_UNAVAILABLE from homeassistant.setup import async_setup_component -from . import entity_test_helpers +from .entity_test_helpers import EntityTestHelpers @pytest.fixture @@ -33,7 +33,7 @@ def pywemo_device_fixture(pywemo_device): yield pywemo_device -class InsightTestTemplate: +class InsightTestTemplate(EntityTestHelpers): """Base class for testing WeMo Insight Sensors.""" ENTITY_ID_SUFFIX: str @@ -46,39 +46,6 @@ class InsightTestTemplate: """Select the appropriate entity for the test.""" return cls.ENTITY_ID_SUFFIX - # Tests that are in common among wemo platforms. These test methods will be run - # in the scope of this test module. They will run using the pywemo_model from - # this test module (Insight). - async def test_async_update_locked_multiple_updates( - self, hass, pywemo_device, wemo_entity - ): - """Test that two hass async_update state updates do not proceed at the same time.""" - await entity_test_helpers.test_async_update_locked_multiple_updates( - hass, - pywemo_device, - wemo_entity, - ) - - async def test_async_update_locked_multiple_callbacks( - self, hass, pywemo_device, wemo_entity - ): - """Test that two device callback state updates do not proceed at the same time.""" - await entity_test_helpers.test_async_update_locked_multiple_callbacks( - hass, - pywemo_device, - wemo_entity, - ) - - async def test_async_update_locked_callback_and_update( - self, hass, pywemo_device, wemo_entity - ): - """Test that a callback and a state update request can't both happen at the same time.""" - await entity_test_helpers.test_async_update_locked_callback_and_update( - hass, - pywemo_device, - wemo_entity, - ) - async def test_state_unavailable(self, hass, wemo_entity, pywemo_device): """Test that there is no failure if the insight_params is not populated.""" del pywemo_device.insight_params[self.INSIGHT_PARAM_NAME]