"""Tests for the oncue component.""" from __future__ import annotations from unittest.mock import patch from aiooncue import LoginFailedException from homeassistant.components import oncue from homeassistant.components.oncue.const import DOMAIN from homeassistant.config_entries import ConfigEntryState from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component from . import _patch_login_and_data from tests.common import MockConfigEntry async def test_config_entry_reload(hass: HomeAssistant) -> None: """Test that a config entry can be reloaded.""" config_entry = MockConfigEntry( domain=DOMAIN, data={CONF_USERNAME: "any", CONF_PASSWORD: "any"}, unique_id="any", ) config_entry.add_to_hass(hass) with _patch_login_and_data(): await async_setup_component(hass, oncue.DOMAIN, {oncue.DOMAIN: {}}) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.LOADED await hass.config_entries.async_unload(config_entry.entry_id) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.NOT_LOADED async def test_config_entry_login_error(hass: HomeAssistant) -> None: """Test that a config entry is failed on login error.""" config_entry = MockConfigEntry( domain=DOMAIN, data={CONF_USERNAME: "any", CONF_PASSWORD: "any"}, unique_id="any", ) config_entry.add_to_hass(hass) with patch( "homeassistant.components.oncue.Oncue.async_login", side_effect=LoginFailedException, ): await async_setup_component(hass, oncue.DOMAIN, {oncue.DOMAIN: {}}) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.SETUP_ERROR async def test_config_entry_retry_later(hass: HomeAssistant) -> None: """Test that a config entry retry on connection error.""" config_entry = MockConfigEntry( domain=DOMAIN, data={CONF_USERNAME: "any", CONF_PASSWORD: "any"}, unique_id="any", ) config_entry.add_to_hass(hass) with patch( "homeassistant.components.oncue.Oncue.async_login", side_effect=TimeoutError, ): await async_setup_component(hass, oncue.DOMAIN, {oncue.DOMAIN: {}}) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.SETUP_RETRY