Replace tests for Idasen Desk with parameterized test (#133672)
parent
6ed345f773
commit
17f0c24895
|
@ -14,7 +14,6 @@ rules:
|
|||
status: todo
|
||||
comment: |
|
||||
- use mock_desk_api
|
||||
- merge test_user_step_auth_failed, test_user_step_cannot_connect and test_user_step_unknown_exception.
|
||||
config-flow: done
|
||||
dependency-transparency: done
|
||||
docs-actions:
|
||||
|
|
|
@ -89,9 +89,17 @@ async def test_user_step_no_new_devices_found(hass: HomeAssistant) -> None:
|
|||
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(
|
||||
hass: HomeAssistant, exception: Exception
|
||||
hass: HomeAssistant, exception: Exception, expected_error: str
|
||||
) -> None:
|
||||
"""Test user step with a cannot connect error."""
|
||||
with patch(
|
||||
|
@ -122,7 +130,7 @@ async def test_user_step_cannot_connect(
|
|||
|
||||
assert result2["type"] is FlowResultType.FORM
|
||||
assert result2["step_id"] == "user"
|
||||
assert result2["errors"] == {"base": "cannot_connect"}
|
||||
assert result2["errors"] == {"base": expected_error}
|
||||
|
||||
with (
|
||||
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
|
||||
|
||||
|
||||
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:
|
||||
"""Test bluetooth step success path."""
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
|
|
Loading…
Reference in New Issue