mirror of
https://github.com/home-assistant/core.git
synced 2025-04-22 16:27:56 +00:00
Refactor SolarEdge config flow tests (#50467)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
0cb08f9516
commit
38a0cf6650
@ -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"}
|
||||
|
Loading…
x
Reference in New Issue
Block a user