1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 21:06:19 +00:00

Allow ignored led_ble devices to be set up from the user flow (#155620)

This commit is contained in:
J. Nick Koston
2025-11-01 10:58:47 -05:00
committed by GitHub
parent 99d3234855
commit e44c6391b1
2 changed files with 51 additions and 1 deletions

View File

@@ -85,7 +85,7 @@ class LedBleConfigFlow(ConfigFlow, domain=DOMAIN):
if discovery := self._discovery_info:
self._discovered_devices[discovery.address] = discovery
else:
current_addresses = self._async_current_ids()
current_addresses = self._async_current_ids(include_ignore=False)
for discovery in async_discovered_service_info(self.hass):
if (
discovery.address in current_addresses

View File

@@ -7,6 +7,7 @@ from led_ble import CharacteristicMissingError
from homeassistant import config_entries
from homeassistant.components.led_ble.const import DOMAIN
from homeassistant.config_entries import SOURCE_IGNORE
from homeassistant.const import CONF_ADDRESS
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType
@@ -278,3 +279,52 @@ async def test_bluetooth_unsupported_model(hass: HomeAssistant) -> None:
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "not_supported"
async def test_user_setup_replaces_ignored_device(hass: HomeAssistant) -> None:
"""Test the user initiated form can replace an ignored device."""
entry = MockConfigEntry(
domain=DOMAIN,
unique_id="AA:BB:CC:DD:EE:FF",
source=SOURCE_IGNORE,
data={},
)
entry.add_to_hass(hass)
with patch(
"homeassistant.components.led_ble.config_flow.async_discovered_service_info",
return_value=[LED_BLE_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"
# Verify the ignored device is in the dropdown
assert "AA:BB:CC:DD:EE:FF" in result["data_schema"].schema["address"].container
with (
patch(
"homeassistant.components.led_ble.config_flow.LEDBLE.update",
),
patch(
"homeassistant.components.led_ble.async_setup_entry",
return_value=True,
) as mock_setup_entry,
):
result2 = await hass.config_entries.flow.async_configure(
result["flow_id"],
{
CONF_ADDRESS: LED_BLE_DISCOVERY_INFO.address,
},
)
await hass.async_block_till_done()
assert result2["type"] is FlowResultType.CREATE_ENTRY
assert result2["title"] == LED_BLE_DISCOVERY_INFO.name
assert result2["data"] == {
CONF_ADDRESS: LED_BLE_DISCOVERY_INFO.address,
}
assert result2["result"].unique_id == LED_BLE_DISCOVERY_INFO.address
assert len(mock_setup_entry.mock_calls) == 1