-
-
Notifications
You must be signed in to change notification settings - Fork 28.6k
/
test_config_flow.py
58 lines (47 loc) · 2.06 KB
/
test_config_flow.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"""Test the P1 Monitor config flow."""
from unittest.mock import patch
from p1monitor import P1MonitorError
from homeassistant.components.p1_monitor.const import CONF_WATERMETER, DOMAIN
from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import CONF_HOST, CONF_NAME
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType
async def test_full_user_flow(hass: HomeAssistant) -> None:
"""Test the full user configuration flow."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result.get("type") == FlowResultType.FORM
assert result.get("step_id") == SOURCE_USER
assert "flow_id" in result
with patch(
"homeassistant.components.p1_monitor.config_flow.P1Monitor.smartmeter"
) as mock_p1monitor, patch(
"homeassistant.components.p1_monitor.async_setup_entry", return_value=True
) as mock_setup_entry:
result2 = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input={
CONF_NAME: "Name",
CONF_HOST: "example.com",
CONF_WATERMETER: True,
},
)
assert result2.get("type") == FlowResultType.CREATE_ENTRY
assert result2.get("title") == "Name"
assert result2.get("data") == {CONF_HOST: "example.com", CONF_WATERMETER: True}
assert len(mock_setup_entry.mock_calls) == 1
assert len(mock_p1monitor.mock_calls) == 1
async def test_api_error(hass: HomeAssistant) -> None:
"""Test we handle cannot connect error."""
with patch(
"homeassistant.components.p1_monitor.P1Monitor.smartmeter",
side_effect=P1MonitorError,
):
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_USER},
data={CONF_NAME: "Name", CONF_HOST: "example.com", CONF_WATERMETER: False},
)
assert result.get("type") == FlowResultType.FORM
assert result.get("errors") == {"base": "cannot_connect"}