Replace tests for Idasen Desk with parameterized test (#133672)
parent
6ed345f773
commit
17f0c24895
|
@ -14,7 +14,6 @@ rules:
|
||||||
status: todo
|
status: todo
|
||||||
comment: |
|
comment: |
|
||||||
- use mock_desk_api
|
- use mock_desk_api
|
||||||
- merge test_user_step_auth_failed, test_user_step_cannot_connect and test_user_step_unknown_exception.
|
|
||||||
config-flow: done
|
config-flow: done
|
||||||
dependency-transparency: done
|
dependency-transparency: done
|
||||||
docs-actions:
|
docs-actions:
|
||||||
|
|
|
@ -89,9 +89,17 @@ async def test_user_step_no_new_devices_found(hass: HomeAssistant) -> None:
|
||||||
assert result["reason"] == "no_devices_found"
|
assert result["reason"] == "no_devices_found"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("exception", [TimeoutError(), BleakError()])
|
@pytest.mark.parametrize(
|
||||||
|
("exception", "expected_error"),
|
||||||
|
[
|
||||||
|
(TimeoutError, "cannot_connect"),
|
||||||
|
(BleakError, "cannot_connect"),
|
||||||
|
(AuthFailedError, "auth_failed"),
|
||||||
|
(RuntimeError, "unknown"),
|
||||||
|
],
|
||||||
|
)
|
||||||
async def test_user_step_cannot_connect(
|
async def test_user_step_cannot_connect(
|
||||||
hass: HomeAssistant, exception: Exception
|
hass: HomeAssistant, exception: Exception, expected_error: str
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test user step with a cannot connect error."""
|
"""Test user step with a cannot connect error."""
|
||||||
with patch(
|
with patch(
|
||||||
|
@ -122,7 +130,7 @@ async def test_user_step_cannot_connect(
|
||||||
|
|
||||||
assert result2["type"] is FlowResultType.FORM
|
assert result2["type"] is FlowResultType.FORM
|
||||||
assert result2["step_id"] == "user"
|
assert result2["step_id"] == "user"
|
||||||
assert result2["errors"] == {"base": "cannot_connect"}
|
assert result2["errors"] == {"base": expected_error}
|
||||||
|
|
||||||
with (
|
with (
|
||||||
patch("homeassistant.components.idasen_desk.config_flow.Desk.connect"),
|
patch("homeassistant.components.idasen_desk.config_flow.Desk.connect"),
|
||||||
|
@ -149,126 +157,6 @@ async def test_user_step_cannot_connect(
|
||||||
assert len(mock_setup_entry.mock_calls) == 1
|
assert len(mock_setup_entry.mock_calls) == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_user_step_auth_failed(hass: HomeAssistant) -> None:
|
|
||||||
"""Test user step with an auth failed error."""
|
|
||||||
with patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.async_discovered_service_info",
|
|
||||||
return_value=[IDASEN_DISCOVERY_INFO],
|
|
||||||
):
|
|
||||||
result = await hass.config_entries.flow.async_init(
|
|
||||||
DOMAIN, context={"source": config_entries.SOURCE_USER}
|
|
||||||
)
|
|
||||||
assert result["type"] is FlowResultType.FORM
|
|
||||||
assert result["step_id"] == "user"
|
|
||||||
assert result["errors"] == {}
|
|
||||||
|
|
||||||
with (
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.Desk.connect",
|
|
||||||
side_effect=AuthFailedError,
|
|
||||||
),
|
|
||||||
patch("homeassistant.components.idasen_desk.config_flow.Desk.disconnect"),
|
|
||||||
):
|
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
|
||||||
result["flow_id"],
|
|
||||||
{
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
|
||||||
|
|
||||||
assert result2["type"] is FlowResultType.FORM
|
|
||||||
assert result2["step_id"] == "user"
|
|
||||||
assert result2["errors"] == {"base": "auth_failed"}
|
|
||||||
|
|
||||||
with (
|
|
||||||
patch("homeassistant.components.idasen_desk.config_flow.Desk.connect"),
|
|
||||||
patch("homeassistant.components.idasen_desk.config_flow.Desk.disconnect"),
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.async_setup_entry",
|
|
||||||
return_value=True,
|
|
||||||
) as mock_setup_entry,
|
|
||||||
):
|
|
||||||
result3 = await hass.config_entries.flow.async_configure(
|
|
||||||
result2["flow_id"],
|
|
||||||
{
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
|
||||||
|
|
||||||
assert result3["type"] is FlowResultType.CREATE_ENTRY
|
|
||||||
assert result3["title"] == IDASEN_DISCOVERY_INFO.name
|
|
||||||
assert result3["data"] == {
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
}
|
|
||||||
assert result3["result"].unique_id == IDASEN_DISCOVERY_INFO.address
|
|
||||||
assert len(mock_setup_entry.mock_calls) == 1
|
|
||||||
|
|
||||||
|
|
||||||
async def test_user_step_unknown_exception(hass: HomeAssistant) -> None:
|
|
||||||
"""Test user step with an unknown exception."""
|
|
||||||
with patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.async_discovered_service_info",
|
|
||||||
return_value=[NOT_IDASEN_DISCOVERY_INFO, IDASEN_DISCOVERY_INFO],
|
|
||||||
):
|
|
||||||
result = await hass.config_entries.flow.async_init(
|
|
||||||
DOMAIN, context={"source": config_entries.SOURCE_USER}
|
|
||||||
)
|
|
||||||
assert result["type"] is FlowResultType.FORM
|
|
||||||
assert result["step_id"] == "user"
|
|
||||||
assert result["errors"] == {}
|
|
||||||
|
|
||||||
with (
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.Desk.connect",
|
|
||||||
side_effect=RuntimeError,
|
|
||||||
),
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.Desk.disconnect",
|
|
||||||
),
|
|
||||||
):
|
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
|
||||||
result["flow_id"],
|
|
||||||
{
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
|
||||||
|
|
||||||
assert result2["type"] is FlowResultType.FORM
|
|
||||||
assert result2["step_id"] == "user"
|
|
||||||
assert result2["errors"] == {"base": "unknown"}
|
|
||||||
|
|
||||||
with (
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.Desk.connect",
|
|
||||||
),
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.config_flow.Desk.disconnect",
|
|
||||||
),
|
|
||||||
patch(
|
|
||||||
"homeassistant.components.idasen_desk.async_setup_entry",
|
|
||||||
return_value=True,
|
|
||||||
) as mock_setup_entry,
|
|
||||||
):
|
|
||||||
result3 = await hass.config_entries.flow.async_configure(
|
|
||||||
result2["flow_id"],
|
|
||||||
{
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
|
||||||
|
|
||||||
assert result3["type"] is FlowResultType.CREATE_ENTRY
|
|
||||||
assert result3["title"] == IDASEN_DISCOVERY_INFO.name
|
|
||||||
assert result3["data"] == {
|
|
||||||
CONF_ADDRESS: IDASEN_DISCOVERY_INFO.address,
|
|
||||||
}
|
|
||||||
assert result3["result"].unique_id == IDASEN_DISCOVERY_INFO.address
|
|
||||||
assert len(mock_setup_entry.mock_calls) == 1
|
|
||||||
|
|
||||||
|
|
||||||
async def test_bluetooth_step_success(hass: HomeAssistant) -> None:
|
async def test_bluetooth_step_success(hass: HomeAssistant) -> None:
|
||||||
"""Test bluetooth step success path."""
|
"""Test bluetooth step success path."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
|
Loading…
Reference in New Issue