async def test_unknown_error(hass: HomeAssistant, mock_sonarr_config_flow: MagicMock) -> None: """Test we show user form on unknown error.""" mock_sonarr_config_flow.async_get_system_status.side_effect = Exception user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == FlowResultType.ABORT assert result["reason"] == "unknown"
async def test_unknown_error( hass: HomeAssistantType, aioclient_mock: AiohttpClientMocker ) -> None: """Test we show user form on unknown error.""" user_input = MOCK_USER_INPUT.copy() with patch( "homeassistant.components.sonarr.config_flow.Sonarr.update", side_effect=Exception, ): result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == RESULT_TYPE_ABORT assert result["reason"] == "unknown"
async def test_cannot_connect(hass: HomeAssistant, mock_sonarr_config_flow: MagicMock) -> None: """Test we show user form on connection error.""" mock_sonarr_config_flow.async_get_system_status.side_effect = ArrException user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == RESULT_TYPE_FORM assert result["step_id"] == "user" assert result["errors"] == {"base": "cannot_connect"}
async def test_invalid_auth(hass: HomeAssistantType, aioclient_mock: AiohttpClientMocker) -> None: """Test we show user form on invalid auth.""" mock_connection_invalid_auth(aioclient_mock) user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == RESULT_TYPE_FORM assert result["step_id"] == "user" assert result["errors"] == {"base": "invalid_auth"}
async def test_cannot_connect(opp: OpenPeerPower, aioclient_mock: AiohttpClientMocker) -> None: """Test we show user form on connection error.""" mock_connection_error(aioclient_mock) user_input = MOCK_USER_INPUT.copy() result = await opp.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == RESULT_TYPE_FORM assert result["step_id"] == "user" assert result["errors"] == {"base": "cannot_connect"}
async def test_invalid_auth(hass: HomeAssistant, mock_sonarr_config_flow: MagicMock) -> None: """Test we show user form on invalid auth.""" mock_sonarr_config_flow.async_get_system_status.side_effect = ( ArrAuthenticationException) user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_USER}, data=user_input, ) assert result["type"] == FlowResultType.FORM assert result["step_id"] == "user" assert result["errors"] == {"base": "invalid_auth"}
async def test_full_import_flow_implementation( hass: HomeAssistantType, aioclient_mock: AiohttpClientMocker) -> None: """Test the full manual user flow from start to finish.""" mock_connection(aioclient_mock) user_input = MOCK_USER_INPUT.copy() with _patch_async_setup(), _patch_async_setup_entry(): result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_IMPORT}, data=user_input, ) assert result["type"] == RESULT_TYPE_CREATE_ENTRY assert result["title"] == HOST assert result["data"] assert result["data"][CONF_HOST] == HOST
async def test_full_import_flow_implementation( hass: HomeAssistantType, aioclient_mock: AiohttpClientMocker ) -> None: """Test the full manual user flow from start to finish.""" mock_connection(aioclient_mock) user_input = MOCK_USER_INPUT.copy() result = await hass.config_entries.flow.async_init( DOMAIN, context={CONF_SOURCE: SOURCE_IMPORT}, data=user_input, ) assert result["type"] == RESULT_TYPE_CREATE_ENTRY assert result["title"] == HOST assert result["data"] assert result["data"][CONF_HOST] == HOST assert result["result"] assert result["result"].options[CONF_UPCOMING_DAYS] == DEFAULT_UPCOMING_DAYS assert result["result"].options[CONF_WANTED_MAX_ITEMS] == DEFAULT_WANTED_MAX_ITEMS