From 38a0cf665070da812e9dd2faa01b499249eef27c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 12 May 2021 17:43:27 +0200 Subject: [PATCH] Refactor SolarEdge config flow tests (#50467) Co-authored-by: Martin Hjelmare --- .../components/solaredge/test_config_flow.py | 88 +++++++++++-------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/tests/components/solaredge/test_config_flow.py b/tests/components/solaredge/test_config_flow.py index c01a5b6827c..280b1c02ca0 100644 --- a/tests/components/solaredge/test_config_flow.py +++ b/tests/components/solaredge/test_config_flow.py @@ -6,7 +6,8 @@ from requests.exceptions import ConnectTimeout, HTTPError from homeassistant import data_entry_flow from homeassistant.components.solaredge import config_flow -from homeassistant.components.solaredge.const import CONF_SITE_ID, DEFAULT_NAME +from homeassistant.components.solaredge.const import CONF_SITE_ID, DEFAULT_NAME, DOMAIN +from homeassistant.config_entries import SOURCE_USER from homeassistant.const import CONF_API_KEY, CONF_NAME from homeassistant.core import HomeAssistant @@ -35,20 +36,25 @@ def init_config_flow(hass: HomeAssistant) -> config_flow.SolarEdgeConfigFlow: async def test_user(hass: HomeAssistant, test_api: Mock) -> None: """Test user config.""" - flow = init_config_flow(hass) - - result = await flow.async_step_user() - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["step_id"] == "user" - - # tets with all provided - result = await flow.async_step_user( - {CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID} + result = await hass.config_entries.flow.async_init( + DOMAIN, context={"source": SOURCE_USER} ) - assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == "solaredge_site_1_2_3" - assert result["data"][CONF_SITE_ID] == SITE_ID - assert result["data"][CONF_API_KEY] == API_KEY + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("step_id") == "user" + + # test with all provided + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID}, + ) + assert result.get("type") == data_entry_flow.RESULT_TYPE_CREATE_ENTRY + assert result.get("title") == "solaredge_site_1_2_3" + + data = result.get("data") + assert data + assert data[CONF_SITE_ID] == SITE_ID + assert data[CONF_API_KEY] == API_KEY async def test_abort_if_already_setup(hass: HomeAssistant, test_api: str) -> None: @@ -58,48 +64,56 @@ async def test_abort_if_already_setup(hass: HomeAssistant, test_api: str) -> Non data={CONF_NAME: DEFAULT_NAME, CONF_SITE_ID: SITE_ID, CONF_API_KEY: API_KEY}, ).add_to_hass(hass) - flow = init_config_flow(hass) - # user: Should fail, same SITE_ID - result = await flow.async_step_user( - {CONF_NAME: "test", CONF_SITE_ID: SITE_ID, CONF_API_KEY: "test"} + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: "test", CONF_SITE_ID: SITE_ID, CONF_API_KEY: "test"}, ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {CONF_SITE_ID: "already_configured"} + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("errors") == {CONF_SITE_ID: "already_configured"} async def test_asserts(hass: HomeAssistant, test_api: Mock) -> None: """Test the _site_in_configuration_exists method.""" - flow = init_config_flow(hass) # test with inactive site test_api.get_details.return_value = {"details": {"status": "NOK"}} - result = await flow.async_step_user( - {CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID} + + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID}, ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {CONF_SITE_ID: "site_not_active"} + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("errors") == {CONF_SITE_ID: "site_not_active"} # test with api_failure test_api.get_details.return_value = {} - result = await flow.async_step_user( - {CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID} + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID}, ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {CONF_SITE_ID: "invalid_api_key"} + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("errors") == {CONF_SITE_ID: "invalid_api_key"} # test with ConnectionTimeout test_api.get_details.side_effect = ConnectTimeout() - result = await flow.async_step_user( - {CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID} + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID}, ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {CONF_SITE_ID: "could_not_connect"} + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("errors") == {CONF_SITE_ID: "could_not_connect"} # test with HTTPError test_api.get_details.side_effect = HTTPError() - result = await flow.async_step_user( - {CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID} + result = await hass.config_entries.flow.async_init( + DOMAIN, + context={"source": SOURCE_USER}, + data={CONF_NAME: NAME, CONF_API_KEY: API_KEY, CONF_SITE_ID: SITE_ID}, ) - assert result["type"] == data_entry_flow.RESULT_TYPE_FORM - assert result["errors"] == {CONF_SITE_ID: "could_not_connect"} + assert result.get("type") == data_entry_flow.RESULT_TYPE_FORM + assert result.get("errors") == {CONF_SITE_ID: "could_not_connect"}