"""Test the Tessie init.""" from unittest.mock import patch from tesla_fleet_api.exceptions import TeslaFleetError from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant from .common import ERROR_AUTH, ERROR_CONNECTION, ERROR_UNKNOWN, setup_platform async def test_load_unload(hass: HomeAssistant) -> None: """Test load and unload.""" entry = await setup_platform(hass) assert entry.state is ConfigEntryState.LOADED assert await hass.config_entries.async_unload(entry.entry_id) await hass.async_block_till_done() assert entry.state is ConfigEntryState.NOT_LOADED async def test_auth_failure( hass: HomeAssistant, mock_get_state_of_all_vehicles ) -> None: """Test init with an authentication error.""" mock_get_state_of_all_vehicles.side_effect = ERROR_AUTH entry = await setup_platform(hass) assert entry.state is ConfigEntryState.SETUP_ERROR async def test_unknown_failure( hass: HomeAssistant, mock_get_state_of_all_vehicles ) -> None: """Test init with an client response error.""" mock_get_state_of_all_vehicles.side_effect = ERROR_UNKNOWN entry = await setup_platform(hass) assert entry.state is ConfigEntryState.SETUP_ERROR async def test_connection_failure( hass: HomeAssistant, mock_get_state_of_all_vehicles ) -> None: """Test init with a network connection error.""" mock_get_state_of_all_vehicles.side_effect = ERROR_CONNECTION entry = await setup_platform(hass) assert entry.state is ConfigEntryState.SETUP_RETRY async def test_products_error(hass: HomeAssistant) -> None: """Test init with a fleet error on products.""" with patch( "homeassistant.components.tessie.Tessie.products", side_effect=TeslaFleetError ): entry = await setup_platform(hass) assert entry.state is ConfigEntryState.SETUP_RETRY async def test_scopes_error(hass: HomeAssistant) -> None: """Test init with a fleet error on scopes.""" with patch( "homeassistant.components.tessie.Tessie.scopes", side_effect=TeslaFleetError ): entry = await setup_platform(hass) assert entry.state is ConfigEntryState.SETUP_RETRY