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
This commit is contained in:
Jan-Philipp Benecke 2024-03-26 21:56:38 +01:00 committed by GitHub
parent e80d73783c
commit f94f1fb826
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 64 additions and 125 deletions

View file

@ -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)

View file

@ -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,
),
]

View file

@ -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()