diff --git a/tests/components/velbus/test_init.py b/tests/components/velbus/test_init.py index dea246b8a86f97f01f74a1336e7d7927ea1d16e3..b7c334d7814c96806f337e8c1496c4faa905657a 100644 --- a/tests/components/velbus/test_init.py +++ b/tests/components/velbus/test_init.py @@ -1,20 +1,51 @@ """Tests for the Velbus component initialisation.""" -from unittest.mock import patch +from unittest.mock import MagicMock, patch -import pytest +from velbusaio.exceptions import VelbusConnectionFailed +from homeassistant.components.velbus import VelbusConfigEntry from homeassistant.components.velbus.const import DOMAIN from homeassistant.config_entries import ConfigEntry, ConfigEntryState from homeassistant.const import CONF_NAME, CONF_PORT from homeassistant.core import HomeAssistant -from homeassistant.helpers import device_registry as dr +from homeassistant.helpers import device_registry as dr, entity_registry as er + +from . import init_integration from tests.common import MockConfigEntry -@pytest.mark.usefixtures("controller") -async def test_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> None: +async def test_setup_connection_failed( + hass: HomeAssistant, + config_entry: VelbusConfigEntry, + controller: MagicMock, +) -> None: + """Test the setup that fails during velbus connect.""" + controller.return_value.connect.side_effect = VelbusConnectionFailed() + await hass.config_entries.async_setup(config_entry.entry_id) + assert config_entry.state is ConfigEntryState.SETUP_RETRY + + +async def test_setup_start_failed( + hass: HomeAssistant, + config_entry: VelbusConfigEntry, + controller: MagicMock, + entity_registry: er.EntityRegistry, +) -> None: + """Test the setup that fails during velbus start task, should result in no entries.""" + controller.return_value.start.side_effect = ConnectionError() + await init_integration(hass, config_entry) + assert config_entry.state is ConfigEntryState.LOADED + assert ( + er.async_entries_for_config_entry(entity_registry, config_entry.entry_id) == [] + ) + + +async def test_unload_entry( + hass: HomeAssistant, + config_entry: ConfigEntry, +) -> None: """Test being able to unload an entry.""" await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() @@ -29,9 +60,10 @@ async def test_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> N assert not hass.data.get(DOMAIN) -@pytest.mark.usefixtures("controller") async def test_device_identifier_migration( - hass: HomeAssistant, config_entry: ConfigEntry, device_registry: dr.DeviceRegistry + hass: HomeAssistant, + config_entry: ConfigEntry, + device_registry: dr.DeviceRegistry, ) -> None: """Test being able to unload an entry.""" original_identifiers = {(DOMAIN, "module_address", "module_serial")} @@ -64,8 +96,10 @@ async def test_device_identifier_migration( assert device_entry.sw_version == "module_sw_version" -@pytest.mark.usefixtures("controller") -async def test_migrate_config_entry(hass: HomeAssistant) -> None: +async def test_migrate_config_entry( + hass: HomeAssistant, + controller: MagicMock, +) -> None: """Test successful migration of entry data.""" legacy_config = {CONF_NAME: "fake_name", CONF_PORT: "1.2.3.4:5678"} entry = MockConfigEntry(domain=DOMAIN, unique_id="my own id", data=legacy_config)