mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Allow ignored Bluetooth adapters to be set up from the user flow (#137373)
This commit is contained in:
parent
1e99b87868
commit
6b32587d10
@ -140,7 +140,7 @@ class BluetoothConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||||||
title=adapter_title(adapter, details), data={}
|
title=adapter_title(adapter, details), data={}
|
||||||
)
|
)
|
||||||
|
|
||||||
configured_addresses = self._async_current_ids()
|
configured_addresses = self._async_current_ids(include_ignore=False)
|
||||||
bluetooth_adapters = get_adapters()
|
bluetooth_adapters = get_adapters()
|
||||||
await bluetooth_adapters.refresh()
|
await bluetooth_adapters.refresh()
|
||||||
self._adapters = bluetooth_adapters.adapters
|
self._adapters = bluetooth_adapters.adapters
|
||||||
@ -155,12 +155,8 @@ class BluetoothConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||||||
and not (system == "Linux" and details[ADAPTER_ADDRESS] == DEFAULT_ADDRESS)
|
and not (system == "Linux" and details[ADAPTER_ADDRESS] == DEFAULT_ADDRESS)
|
||||||
]
|
]
|
||||||
if not unconfigured_adapters:
|
if not unconfigured_adapters:
|
||||||
ignored_adapters = len(
|
|
||||||
self._async_current_entries(include_ignore=True)
|
|
||||||
) - len(self._async_current_entries(include_ignore=False))
|
|
||||||
return self.async_abort(
|
return self.async_abort(
|
||||||
reason="no_adapters",
|
reason="no_adapters",
|
||||||
description_placeholders={"ignored_adapters": str(ignored_adapters)},
|
|
||||||
)
|
)
|
||||||
if len(unconfigured_adapters) == 1:
|
if len(unconfigured_adapters) == 1:
|
||||||
self._adapter = list(self._adapters)[0]
|
self._adapter = list(self._adapters)[0]
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",
|
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",
|
||||||
"no_adapters": "No unconfigured Bluetooth adapters found. There are {ignored_adapters} ignored adapters."
|
"no_adapters": "No unconfigured Bluetooth adapters found."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
|
@ -517,8 +517,10 @@ async def test_options_flow_local_no_passive_support(hass: HomeAssistant) -> Non
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("one_adapter")
|
@pytest.mark.usefixtures("one_adapter")
|
||||||
async def test_async_step_user_linux_adapter_is_ignored(hass: HomeAssistant) -> None:
|
async def test_async_step_user_linux_adapter_replace_ignored(
|
||||||
"""Test we give a hint that the adapter is ignored."""
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
|
"""Test we can replace an ignored adapter from user flow."""
|
||||||
entry = MockConfigEntry(
|
entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
unique_id="00:00:00:00:00:01",
|
unique_id="00:00:00:00:00:01",
|
||||||
@ -530,9 +532,19 @@ async def test_async_step_user_linux_adapter_is_ignored(hass: HomeAssistant) ->
|
|||||||
context={"source": config_entries.SOURCE_USER},
|
context={"source": config_entries.SOURCE_USER},
|
||||||
data={},
|
data={},
|
||||||
)
|
)
|
||||||
assert result["type"] is FlowResultType.ABORT
|
with (
|
||||||
assert result["reason"] == "no_adapters"
|
patch("homeassistant.components.bluetooth.async_setup", return_value=True),
|
||||||
assert result["description_placeholders"] == {"ignored_adapters": "1"}
|
patch(
|
||||||
|
"homeassistant.components.bluetooth.async_setup_entry", return_value=True
|
||||||
|
) as mock_setup_entry,
|
||||||
|
):
|
||||||
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"], user_input={}
|
||||||
|
)
|
||||||
|
assert result2["type"] is FlowResultType.CREATE_ENTRY
|
||||||
|
assert result2["title"] == "ACME Bluetooth Adapter 5.0 (00:00:00:00:00:01)"
|
||||||
|
assert result2["data"] == {}
|
||||||
|
assert len(mock_setup_entry.mock_calls) == 1
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("enable_bluetooth")
|
@pytest.mark.usefixtures("enable_bluetooth")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user