Add test helper mock_config_flow (#90103)
parent
0ca6723378
commit
0ecd043cb2
|
@ -34,6 +34,7 @@ from homeassistant.components.device_automation import ( # noqa: F401
|
|||
_async_get_device_automation_capabilities as async_get_device_automation_capabilities,
|
||||
)
|
||||
from homeassistant.config import async_process_component_config
|
||||
from homeassistant.config_entries import ConfigFlow
|
||||
from homeassistant.const import (
|
||||
DEVICE_DEFAULT_NAME,
|
||||
EVENT_HOMEASSISTANT_CLOSE,
|
||||
|
@ -1242,6 +1243,16 @@ async def get_system_health_info(hass: HomeAssistant, domain: str) -> dict[str,
|
|||
return await hass.data["system_health"][domain].info_callback(hass)
|
||||
|
||||
|
||||
@contextmanager
|
||||
def mock_config_flow(domain: str, config_flow: type[ConfigFlow]) -> None:
|
||||
"""Mock a config flow handler."""
|
||||
assert domain not in config_entries.HANDLERS
|
||||
config_entries.HANDLERS[domain] = config_flow
|
||||
_LOGGER.info("Adding mock config flow: %s", domain)
|
||||
yield
|
||||
config_entries.HANDLERS.pop(domain)
|
||||
|
||||
|
||||
def mock_integration(
|
||||
hass: HomeAssistant, module: MockModule, built_in: bool = True
|
||||
) -> loader.Integration:
|
||||
|
|
|
@ -28,7 +28,7 @@ from homeassistant.core import HomeAssistant
|
|||
from homeassistant.helpers import config_entry_oauth2_flow
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockConfigEntry, mock_platform
|
||||
from tests.common import MockConfigEntry, mock_config_flow, mock_platform
|
||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||
from tests.typing import ClientSessionGenerator, WebSocketGenerator
|
||||
|
||||
|
@ -98,7 +98,7 @@ async def mock_application_credentials_integration(
|
|||
yield
|
||||
|
||||
|
||||
class FakeConfigFlow(config_entry_oauth2_flow.AbstractOAuth2FlowHandler, domain=DOMAIN):
|
||||
class FakeConfigFlow(config_entry_oauth2_flow.AbstractOAuth2FlowHandler):
|
||||
"""Config flow used during tests."""
|
||||
|
||||
DOMAIN = TEST_DOMAIN
|
||||
|
@ -115,8 +115,8 @@ def config_flow_handler(
|
|||
) -> Generator[FakeConfigFlow, None, None]:
|
||||
"""Fixture for a test config flow."""
|
||||
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
||||
with patch.dict(config_entries.HANDLERS, {TEST_DOMAIN: FakeConfigFlow}):
|
||||
yield FakeConfigFlow
|
||||
with mock_config_flow(TEST_DOMAIN, FakeConfigFlow):
|
||||
yield
|
||||
|
||||
|
||||
class OAuthFixture:
|
||||
|
|
|
@ -12,7 +12,12 @@ from homeassistant.const import EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_S
|
|||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockModule, mock_entity_platform, mock_integration
|
||||
from tests.common import (
|
||||
MockModule,
|
||||
mock_config_flow,
|
||||
mock_entity_platform,
|
||||
mock_integration,
|
||||
)
|
||||
from tests.test_util.aiohttp import AiohttpClientMocker
|
||||
|
||||
|
||||
|
@ -22,15 +27,14 @@ async def mock_mqtt_fixture(hass):
|
|||
mock_integration(hass, MockModule(MQTT_DOMAIN))
|
||||
mock_entity_platform(hass, f"config_flow.{MQTT_DOMAIN}", None)
|
||||
|
||||
with patch.dict(config_entries.HANDLERS):
|
||||
class MqttFlow(config_entries.ConfigFlow):
|
||||
"""Test flow."""
|
||||
|
||||
class MqttFlow(config_entries.ConfigFlow, domain=MQTT_DOMAIN):
|
||||
"""Test flow."""
|
||||
VERSION = 1
|
||||
|
||||
VERSION = 1
|
||||
|
||||
async_step_hassio = AsyncMock(return_value={"type": "abort"})
|
||||
async_step_hassio = AsyncMock(return_value={"type": "abort"})
|
||||
|
||||
with mock_config_flow(MQTT_DOMAIN, MqttFlow):
|
||||
yield MqttFlow
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ from unittest.mock import Mock, patch
|
|||
|
||||
import pytest
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.hassio.handler import HassioAPIError
|
||||
from homeassistant.components.homeassistant_hardware import silabs_multiprotocol_addon
|
||||
from homeassistant.components.zha.core.const import DOMAIN as ZHA_DOMAIN
|
||||
|
@ -15,12 +14,18 @@ from homeassistant.config_entries import ConfigEntry, ConfigFlow
|
|||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.data_entry_flow import FlowResult, FlowResultType
|
||||
|
||||
from tests.common import MockConfigEntry, MockModule, mock_integration, mock_platform
|
||||
from tests.common import (
|
||||
MockConfigEntry,
|
||||
MockModule,
|
||||
mock_config_flow,
|
||||
mock_integration,
|
||||
mock_platform,
|
||||
)
|
||||
|
||||
TEST_DOMAIN = "test"
|
||||
|
||||
|
||||
class TestConfigFlow(ConfigFlow, domain=TEST_DOMAIN):
|
||||
class TestConfigFlow(ConfigFlow):
|
||||
"""Handle a config flow for the silabs multiprotocol add-on."""
|
||||
|
||||
VERSION = 1
|
||||
|
@ -87,8 +92,8 @@ def config_flow_handler(
|
|||
) -> Generator[TestConfigFlow, None, None]:
|
||||
"""Fixture for a test config flow."""
|
||||
mock_platform(hass, f"{TEST_DOMAIN}.config_flow")
|
||||
with patch.dict(config_entries.HANDLERS, {TEST_DOMAIN: TestConfigFlow}):
|
||||
yield TestConfigFlow
|
||||
with mock_config_flow(TEST_DOMAIN, TestConfigFlow):
|
||||
yield
|
||||
|
||||
|
||||
async def test_option_flow_install_multi_pan_addon(
|
||||
|
|
Loading…
Reference in New Issue