Add MockPlatform type hints in tests (#120012)

* Add MockPlatform type hints in tests

* Remove useless code

* Improve

* Revert "Improve"

This reverts commit 9ad04f9255.
This commit is contained in:
epenet 2024-06-21 11:04:15 +02:00 committed by GitHub
parent 53022df8a4
commit dc6c1f4e87
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 43 additions and 21 deletions

View file

@ -3,7 +3,7 @@
from __future__ import annotations
import asyncio
from collections.abc import Mapping, Sequence
from collections.abc import Callable, Coroutine, Mapping, Sequence
from contextlib import asynccontextmanager, contextmanager
from datetime import UTC, datetime, timedelta
from enum import Enum
@ -858,13 +858,25 @@ class MockPlatform:
def __init__(
self,
setup_platform=None,
dependencies=None,
platform_schema=None,
async_setup_platform=None,
async_setup_entry=None,
scan_interval=None,
):
*,
setup_platform: Callable[
[HomeAssistant, ConfigType, AddEntitiesCallback, DiscoveryInfoType | None],
None,
]
| None = None,
dependencies: list[str] | None = None,
platform_schema: vol.Schema | None = None,
async_setup_platform: Callable[
[HomeAssistant, ConfigType, AddEntitiesCallback, DiscoveryInfoType | None],
Coroutine[Any, Any, None],
]
| None = None,
async_setup_entry: Callable[
[HomeAssistant, ConfigEntry, AddEntitiesCallback], Coroutine[Any, Any, None]
]
| None = None,
scan_interval: timedelta | None = None,
) -> None:
"""Initialize the platform."""
self.DEPENDENCIES = dependencies or []

View file

@ -160,7 +160,6 @@ async def setup_lock_platform_test_entity(
)
return True
MockPlatform(hass, f"{TEST_DOMAIN}.config_flow")
mock_integration(
hass,
MockModule(

View file

@ -103,7 +103,6 @@ async def setup_lock_platform_test_entity(
)
return True
MockPlatform(hass, f"{TEST_DOMAIN}.config_flow")
mock_integration(
hass,
MockModule(

View file

@ -132,7 +132,9 @@ async def test_circular_import(hass: HomeAssistant) -> None:
# dependencies are only set in component level
# since we are using manifest to hold them
mock_integration(hass, MockModule("test_circular", dependencies=["test_component"]))
mock_platform(hass, "test_circular.switch", MockPlatform(setup_platform))
mock_platform(
hass, "test_circular.switch", MockPlatform(setup_platform=setup_platform)
)
await setup.async_setup_component(
hass,

View file

@ -52,7 +52,7 @@ async def test_setup_loads_platforms(hass: HomeAssistant) -> None:
mock_integration(hass, MockModule("test_component", setup=component_setup))
# mock the dependencies
mock_integration(hass, MockModule("mod2", dependencies=["test_component"]))
mock_platform(hass, "mod2.test_domain", MockPlatform(platform_setup))
mock_platform(hass, "mod2.test_domain", MockPlatform(setup_platform=platform_setup))
component = EntityComponent(_LOGGER, DOMAIN, hass)
@ -71,8 +71,12 @@ async def test_setup_recovers_when_setup_raises(hass: HomeAssistant) -> None:
platform1_setup = Mock(side_effect=Exception("Broken"))
platform2_setup = Mock(return_value=None)
mock_platform(hass, "mod1.test_domain", MockPlatform(platform1_setup))
mock_platform(hass, "mod2.test_domain", MockPlatform(platform2_setup))
mock_platform(
hass, "mod1.test_domain", MockPlatform(setup_platform=platform1_setup)
)
mock_platform(
hass, "mod2.test_domain", MockPlatform(setup_platform=platform2_setup)
)
component = EntityComponent(_LOGGER, DOMAIN, hass)
@ -128,7 +132,9 @@ async def test_set_scan_interval_via_config(hass: HomeAssistant) -> None:
"""Test the platform setup."""
add_entities([MockEntity(should_poll=True)])
mock_platform(hass, "platform.test_domain", MockPlatform(platform_setup))
mock_platform(
hass, "platform.test_domain", MockPlatform(setup_platform=platform_setup)
)
component = EntityComponent(_LOGGER, DOMAIN, hass)
@ -154,7 +160,7 @@ async def test_set_entity_namespace_via_config(hass: HomeAssistant) -> None:
"""Test the platform setup."""
add_entities([MockEntity(name="beer"), MockEntity(name=None)])
platform = MockPlatform(platform_setup)
platform = MockPlatform(setup_platform=platform_setup)
mock_platform(hass, "platform.test_domain", platform)
@ -204,7 +210,9 @@ async def test_platform_not_ready(hass: HomeAssistant) -> None:
"""Test that we retry when platform not ready."""
platform1_setup = Mock(side_effect=[PlatformNotReady, PlatformNotReady, None])
mock_integration(hass, MockModule("mod1"))
mock_platform(hass, "mod1.test_domain", MockPlatform(platform1_setup))
mock_platform(
hass, "mod1.test_domain", MockPlatform(setup_platform=platform1_setup)
)
component = EntityComponent(_LOGGER, DOMAIN, hass)
@ -678,7 +686,9 @@ async def test_platforms_shutdown_on_stop(hass: HomeAssistant) -> None:
"""Test that we shutdown platforms on stop."""
platform1_setup = Mock(side_effect=[PlatformNotReady, PlatformNotReady, None])
mock_integration(hass, MockModule("mod1"))
mock_platform(hass, "mod1.test_domain", MockPlatform(platform1_setup))
mock_platform(
hass, "mod1.test_domain", MockPlatform(setup_platform=platform1_setup)
)
component = EntityComponent(_LOGGER, DOMAIN, hass)

View file

@ -228,7 +228,7 @@ async def test_set_scan_interval_via_platform(hass: HomeAssistant) -> None:
"""Test the platform setup."""
add_entities([MockEntity(should_poll=True)])
platform = MockPlatform(platform_setup)
platform = MockPlatform(setup_platform=platform_setup)
platform.SCAN_INTERVAL = timedelta(seconds=30)
mock_platform(hass, "platform.test_domain", platform)

View file

@ -163,7 +163,7 @@ async def test_validate_platform_config_2(
mock_platform(
hass,
"whatever.platform_conf",
MockPlatform("whatever", platform_schema=platform_schema),
MockPlatform(platform_schema=platform_schema),
)
with assert_setup_component(1):
@ -192,7 +192,7 @@ async def test_validate_platform_config_3(
mock_platform(
hass,
"whatever.platform_conf",
MockPlatform("whatever", platform_schema=platform_schema),
MockPlatform(platform_schema=platform_schema),
)
with assert_setup_component(1):