From f94f1fb826beb1e7977bdd7fa688d164641cec30 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Tue, 26 Mar 2024 21:56:38 +0100 Subject: [PATCH] Use `setup_test_component_platform` func for number entity component tests instead of `hass.components` (#114017) * Use `setup_test_component_platform` fixture for number entity component tests instead of `hass.components` * Now function * Ruff format --- .../number.py => components/number/common.py} | 61 +--------- tests/components/number/conftest.py | 19 +++ tests/components/number/test_init.py | 109 +++++++----------- 3 files changed, 64 insertions(+), 125 deletions(-) rename tests/{testing_config/custom_components/test/number.py => components/number/common.py} (56%) create mode 100644 tests/components/number/conftest.py diff --git a/tests/testing_config/custom_components/test/number.py b/tests/components/number/common.py similarity index 56% rename from tests/testing_config/custom_components/test/number.py rename to tests/components/number/common.py index 4de3dce233a..9843fea7751 100644 --- a/tests/testing_config/custom_components/test/number.py +++ b/tests/components/number/common.py @@ -1,16 +1,9 @@ -"""Provide a mock number platform. - -Call init before using it in your tests to ensure clean test data. -""" +"""Common helper and classes for number entity tests.""" from homeassistant.components.number import NumberEntity, RestoreNumber from tests.common import MockEntity -UNIQUE_NUMBER = "unique_number" - -ENTITIES = [] - class MockNumberEntity(MockEntity, NumberEntity): """Mock number class.""" @@ -60,55 +53,3 @@ class MockRestoreNumber(MockNumberEntity, RestoreNumber): last_number_data.native_unit_of_measurement ) self._values["native_value"] = last_number_data.native_value - - -class LegacyMockNumberEntity(MockEntity, NumberEntity): - """Mock Number class using deprecated features.""" - - @property - def max_value(self): - """Return the native max_value.""" - return self._handle("max_value") - - @property - def min_value(self): - """Return the native min_value.""" - return self._handle("min_value") - - @property - def step(self): - """Return the native step.""" - return self._handle("step") - - @property - def value(self): - """Return the current value.""" - return self._handle("value") - - def set_value(self, value: float) -> None: - """Change the selected option.""" - self._values["value"] = value - - -def init(empty=False): - """Initialize the platform with entities.""" - global ENTITIES - - ENTITIES = ( - [] - if empty - else [ - MockNumberEntity( - name="test", - unique_id=UNIQUE_NUMBER, - native_value=50.0, - ), - ] - ) - - -async def async_setup_platform( - hass, config, async_add_entities_callback, discovery_info=None -): - """Return mock entities.""" - async_add_entities_callback(ENTITIES) diff --git a/tests/components/number/conftest.py b/tests/components/number/conftest.py new file mode 100644 index 00000000000..a84ab03611b --- /dev/null +++ b/tests/components/number/conftest.py @@ -0,0 +1,19 @@ +"""Fixtures for the number entity component tests.""" + +import pytest + +from tests.components.number.common import MockNumberEntity + +UNIQUE_NUMBER = "unique_number" + + +@pytest.fixture +def mock_number_entities() -> list[MockNumberEntity]: + """Return a list of mock number entities.""" + return [ + MockNumberEntity( + name="test", + unique_id="unique_number", + native_value=50.0, + ), + ] diff --git a/tests/components/number/test_init.py b/tests/components/number/test_init.py index 8eb84e90e3e..07d2baf4926 100644 --- a/tests/components/number/test_init.py +++ b/tests/components/number/test_init.py @@ -51,7 +51,9 @@ from tests.common import ( mock_integration, mock_platform, mock_restore_cache_with_extra_data, + setup_test_component_platform, ) +from tests.components.number import common TEST_DOMAIN = "test" @@ -332,10 +334,12 @@ async def test_sync_set_value(hass: HomeAssistant) -> None: assert number.set_value.call_args[0][0] == 42 -async def test_set_value(hass: HomeAssistant, enable_custom_integrations: None) -> None: +async def test_set_value( + hass: HomeAssistant, + mock_number_entities: list[MockNumberEntity], +) -> None: """Test we can only set valid values.""" - platform = getattr(hass.components, f"test.{DOMAIN}") - platform.init() + setup_test_component_platform(hass, DOMAIN, mock_number_entities) assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}}) await hass.async_block_till_done() @@ -450,7 +454,6 @@ async def test_set_value(hass: HomeAssistant, enable_custom_integrations: None) ) async def test_temperature_conversion( hass: HomeAssistant, - enable_custom_integrations: None, unit_system, native_unit, state_unit, @@ -467,21 +470,17 @@ async def test_temperature_conversion( ) -> None: """Test temperature conversion.""" hass.config.units = unit_system - platform = getattr(hass.components, f"test.{DOMAIN}") - platform.init(empty=True) - platform.ENTITIES.append( - platform.MockNumberEntity( - name="Test", - native_max_value=native_max_value, - native_min_value=native_min_value, - native_step=native_step, - native_unit_of_measurement=native_unit, - native_value=initial_native_value, - device_class=NumberDeviceClass.TEMPERATURE, - ) + entity0 = common.MockNumberEntity( + name="Test", + native_max_value=native_max_value, + native_min_value=native_min_value, + native_step=native_step, + native_unit_of_measurement=native_unit, + native_value=initial_native_value, + device_class=NumberDeviceClass.TEMPERATURE, ) + setup_test_component_platform(hass, DOMAIN, [entity0]) - entity0 = platform.ENTITIES[0] assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}}) await hass.async_block_till_done() @@ -544,24 +543,19 @@ RESTORE_DATA = { async def test_restore_number_save_state( hass: HomeAssistant, hass_storage: dict[str, Any], - enable_custom_integrations: None, ) -> None: """Test RestoreNumber.""" - platform = getattr(hass.components, "test.number") - platform.init(empty=True) - platform.ENTITIES.append( - platform.MockRestoreNumber( - name="Test", - native_max_value=200.0, - native_min_value=-10.0, - native_step=2.0, - native_unit_of_measurement=UnitOfTemperature.FAHRENHEIT, - native_value=123.0, - device_class=NumberDeviceClass.TEMPERATURE, - ) + entity0 = common.MockRestoreNumber( + name="Test", + native_max_value=200.0, + native_min_value=-10.0, + native_step=2.0, + native_unit_of_measurement=UnitOfTemperature.FAHRENHEIT, + native_value=123.0, + device_class=NumberDeviceClass.TEMPERATURE, ) + setup_test_component_platform(hass, DOMAIN, [entity0]) - entity0 = platform.ENTITIES[0] assert await async_setup_component(hass, "number", {"number": {"platform": "test"}}) await hass.async_block_till_done() @@ -615,7 +609,6 @@ async def test_restore_number_save_state( ) async def test_restore_number_restore_state( hass: HomeAssistant, - enable_custom_integrations: None, hass_storage: dict[str, Any], native_max_value, native_min_value, @@ -629,17 +622,13 @@ async def test_restore_number_restore_state( """Test RestoreNumber.""" mock_restore_cache_with_extra_data(hass, ((State("number.test", ""), extra_data),)) - platform = getattr(hass.components, "test.number") - platform.init(empty=True) - platform.ENTITIES.append( - platform.MockRestoreNumber( - device_class=device_class, - name="Test", - native_value=None, - ) + entity0 = common.MockRestoreNumber( + device_class=device_class, + name="Test", + native_value=None, ) + setup_test_component_platform(hass, DOMAIN, [entity0]) - entity0 = platform.ENTITIES[0] assert await async_setup_component(hass, "number", {"number": {"platform": "test"}}) await hass.async_block_till_done() @@ -708,7 +697,6 @@ async def test_restore_number_restore_state( ) async def test_custom_unit( hass: HomeAssistant, - enable_custom_integrations: None, device_class, native_unit, custom_unit, @@ -725,19 +713,15 @@ async def test_custom_unit( ) await hass.async_block_till_done() - platform = getattr(hass.components, "test.number") - platform.init(empty=True) - platform.ENTITIES.append( - platform.MockNumberEntity( - name="Test", - native_value=native_value, - native_unit_of_measurement=native_unit, - device_class=device_class, - unique_id="very_unique", - ) + entity0 = common.MockNumberEntity( + name="Test", + native_value=native_value, + native_unit_of_measurement=native_unit, + device_class=device_class, + unique_id="very_unique", ) + setup_test_component_platform(hass, DOMAIN, [entity0]) - entity0 = platform.ENTITIES[0] assert await async_setup_component(hass, "number", {"number": {"platform": "test"}}) await hass.async_block_till_done() @@ -789,7 +773,6 @@ async def test_custom_unit( ) async def test_custom_unit_change( hass: HomeAssistant, - enable_custom_integrations: None, native_unit, custom_unit, used_custom_unit, @@ -800,19 +783,15 @@ async def test_custom_unit_change( ) -> None: """Test custom unit changes are picked up.""" entity_registry = er.async_get(hass) - platform = getattr(hass.components, "test.number") - platform.init(empty=True) - platform.ENTITIES.append( - platform.MockNumberEntity( - name="Test", - native_value=native_value, - native_unit_of_measurement=native_unit, - device_class=NumberDeviceClass.TEMPERATURE, - unique_id="very_unique", - ) + entity0 = common.MockNumberEntity( + name="Test", + native_value=native_value, + native_unit_of_measurement=native_unit, + device_class=NumberDeviceClass.TEMPERATURE, + unique_id="very_unique", ) + setup_test_component_platform(hass, DOMAIN, [entity0]) - entity0 = platform.ENTITIES[0] assert await async_setup_component(hass, "number", {"number": {"platform": "test"}}) await hass.async_block_till_done()