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:
parent
e80d73783c
commit
f94f1fb826
3 changed files with 64 additions and 125 deletions
|
@ -1,16 +1,9 @@
|
||||||
"""Provide a mock number platform.
|
"""Common helper and classes for number entity tests."""
|
||||||
|
|
||||||
Call init before using it in your tests to ensure clean test data.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from homeassistant.components.number import NumberEntity, RestoreNumber
|
from homeassistant.components.number import NumberEntity, RestoreNumber
|
||||||
|
|
||||||
from tests.common import MockEntity
|
from tests.common import MockEntity
|
||||||
|
|
||||||
UNIQUE_NUMBER = "unique_number"
|
|
||||||
|
|
||||||
ENTITIES = []
|
|
||||||
|
|
||||||
|
|
||||||
class MockNumberEntity(MockEntity, NumberEntity):
|
class MockNumberEntity(MockEntity, NumberEntity):
|
||||||
"""Mock number class."""
|
"""Mock number class."""
|
||||||
|
@ -60,55 +53,3 @@ class MockRestoreNumber(MockNumberEntity, RestoreNumber):
|
||||||
last_number_data.native_unit_of_measurement
|
last_number_data.native_unit_of_measurement
|
||||||
)
|
)
|
||||||
self._values["native_value"] = last_number_data.native_value
|
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)
|
|
19
tests/components/number/conftest.py
Normal file
19
tests/components/number/conftest.py
Normal 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,
|
||||||
|
),
|
||||||
|
]
|
|
@ -51,7 +51,9 @@ from tests.common import (
|
||||||
mock_integration,
|
mock_integration,
|
||||||
mock_platform,
|
mock_platform,
|
||||||
mock_restore_cache_with_extra_data,
|
mock_restore_cache_with_extra_data,
|
||||||
|
setup_test_component_platform,
|
||||||
)
|
)
|
||||||
|
from tests.components.number import common
|
||||||
|
|
||||||
TEST_DOMAIN = "test"
|
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
|
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."""
|
"""Test we can only set valid values."""
|
||||||
platform = getattr(hass.components, f"test.{DOMAIN}")
|
setup_test_component_platform(hass, DOMAIN, mock_number_entities)
|
||||||
platform.init()
|
|
||||||
|
|
||||||
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}})
|
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}})
|
||||||
await hass.async_block_till_done()
|
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(
|
async def test_temperature_conversion(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
enable_custom_integrations: None,
|
|
||||||
unit_system,
|
unit_system,
|
||||||
native_unit,
|
native_unit,
|
||||||
state_unit,
|
state_unit,
|
||||||
|
@ -467,21 +470,17 @@ async def test_temperature_conversion(
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test temperature conversion."""
|
"""Test temperature conversion."""
|
||||||
hass.config.units = unit_system
|
hass.config.units = unit_system
|
||||||
platform = getattr(hass.components, f"test.{DOMAIN}")
|
entity0 = common.MockNumberEntity(
|
||||||
platform.init(empty=True)
|
name="Test",
|
||||||
platform.ENTITIES.append(
|
native_max_value=native_max_value,
|
||||||
platform.MockNumberEntity(
|
native_min_value=native_min_value,
|
||||||
name="Test",
|
native_step=native_step,
|
||||||
native_max_value=native_max_value,
|
native_unit_of_measurement=native_unit,
|
||||||
native_min_value=native_min_value,
|
native_value=initial_native_value,
|
||||||
native_step=native_step,
|
device_class=NumberDeviceClass.TEMPERATURE,
|
||||||
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"}})
|
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
@ -544,24 +543,19 @@ RESTORE_DATA = {
|
||||||
async def test_restore_number_save_state(
|
async def test_restore_number_save_state(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
hass_storage: dict[str, Any],
|
hass_storage: dict[str, Any],
|
||||||
enable_custom_integrations: None,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test RestoreNumber."""
|
"""Test RestoreNumber."""
|
||||||
platform = getattr(hass.components, "test.number")
|
entity0 = common.MockRestoreNumber(
|
||||||
platform.init(empty=True)
|
name="Test",
|
||||||
platform.ENTITIES.append(
|
native_max_value=200.0,
|
||||||
platform.MockRestoreNumber(
|
native_min_value=-10.0,
|
||||||
name="Test",
|
native_step=2.0,
|
||||||
native_max_value=200.0,
|
native_unit_of_measurement=UnitOfTemperature.FAHRENHEIT,
|
||||||
native_min_value=-10.0,
|
native_value=123.0,
|
||||||
native_step=2.0,
|
device_class=NumberDeviceClass.TEMPERATURE,
|
||||||
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"}})
|
assert await async_setup_component(hass, "number", {"number": {"platform": "test"}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
@ -615,7 +609,6 @@ async def test_restore_number_save_state(
|
||||||
)
|
)
|
||||||
async def test_restore_number_restore_state(
|
async def test_restore_number_restore_state(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
enable_custom_integrations: None,
|
|
||||||
hass_storage: dict[str, Any],
|
hass_storage: dict[str, Any],
|
||||||
native_max_value,
|
native_max_value,
|
||||||
native_min_value,
|
native_min_value,
|
||||||
|
@ -629,17 +622,13 @@ async def test_restore_number_restore_state(
|
||||||
"""Test RestoreNumber."""
|
"""Test RestoreNumber."""
|
||||||
mock_restore_cache_with_extra_data(hass, ((State("number.test", ""), extra_data),))
|
mock_restore_cache_with_extra_data(hass, ((State("number.test", ""), extra_data),))
|
||||||
|
|
||||||
platform = getattr(hass.components, "test.number")
|
entity0 = common.MockRestoreNumber(
|
||||||
platform.init(empty=True)
|
device_class=device_class,
|
||||||
platform.ENTITIES.append(
|
name="Test",
|
||||||
platform.MockRestoreNumber(
|
native_value=None,
|
||||||
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"}})
|
assert await async_setup_component(hass, "number", {"number": {"platform": "test"}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
@ -708,7 +697,6 @@ async def test_restore_number_restore_state(
|
||||||
)
|
)
|
||||||
async def test_custom_unit(
|
async def test_custom_unit(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
enable_custom_integrations: None,
|
|
||||||
device_class,
|
device_class,
|
||||||
native_unit,
|
native_unit,
|
||||||
custom_unit,
|
custom_unit,
|
||||||
|
@ -725,19 +713,15 @@ async def test_custom_unit(
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
platform = getattr(hass.components, "test.number")
|
entity0 = common.MockNumberEntity(
|
||||||
platform.init(empty=True)
|
name="Test",
|
||||||
platform.ENTITIES.append(
|
native_value=native_value,
|
||||||
platform.MockNumberEntity(
|
native_unit_of_measurement=native_unit,
|
||||||
name="Test",
|
device_class=device_class,
|
||||||
native_value=native_value,
|
unique_id="very_unique",
|
||||||
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"}})
|
assert await async_setup_component(hass, "number", {"number": {"platform": "test"}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
@ -789,7 +773,6 @@ async def test_custom_unit(
|
||||||
)
|
)
|
||||||
async def test_custom_unit_change(
|
async def test_custom_unit_change(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
enable_custom_integrations: None,
|
|
||||||
native_unit,
|
native_unit,
|
||||||
custom_unit,
|
custom_unit,
|
||||||
used_custom_unit,
|
used_custom_unit,
|
||||||
|
@ -800,19 +783,15 @@ async def test_custom_unit_change(
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test custom unit changes are picked up."""
|
"""Test custom unit changes are picked up."""
|
||||||
entity_registry = er.async_get(hass)
|
entity_registry = er.async_get(hass)
|
||||||
platform = getattr(hass.components, "test.number")
|
entity0 = common.MockNumberEntity(
|
||||||
platform.init(empty=True)
|
name="Test",
|
||||||
platform.ENTITIES.append(
|
native_value=native_value,
|
||||||
platform.MockNumberEntity(
|
native_unit_of_measurement=native_unit,
|
||||||
name="Test",
|
device_class=NumberDeviceClass.TEMPERATURE,
|
||||||
native_value=native_value,
|
unique_id="very_unique",
|
||||||
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"}})
|
assert await async_setup_component(hass, "number", {"number": {"platform": "test"}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue