Replace tests for Idasen Desk with parameterized test (#133672)

pull/133679/head
Abílio Costa 2024-12-20 17:24:57 +00:00 committed by GitHub
parent 6ed345f773
commit 17f0c24895
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 124 deletions

View File

@ -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:

View File

@ -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(