Convert Hue to use unique ID (#30000)
* Convert Hue to use unique ID * Fix normalization * Store/restore unique ID * Fix tests
This commit is contained in:
parent
575eb48feb
commit
58b5833d64
12 changed files with 385 additions and 440 deletions
|
@ -434,8 +434,8 @@ async def test_saving_and_loading(hass):
|
|||
VERSION = 5
|
||||
CONNECTION_CLASS = config_entries.CONN_CLASS_LOCAL_POLL
|
||||
|
||||
@asyncio.coroutine
|
||||
def async_step_user(self, user_input=None):
|
||||
async def async_step_user(self, user_input=None):
|
||||
await self.async_set_unique_id("unique")
|
||||
return self.async_create_entry(title="Test Title", data={"token": "abcd"})
|
||||
|
||||
with patch.dict(config_entries.HANDLERS, {"test": TestFlow}):
|
||||
|
@ -477,6 +477,7 @@ async def test_saving_and_loading(hass):
|
|||
assert orig.data == loaded.data
|
||||
assert orig.source == loaded.source
|
||||
assert orig.connection_class == loaded.connection_class
|
||||
assert orig.unique_id == loaded.unique_id
|
||||
|
||||
|
||||
async def test_forward_entry_sets_up_component(hass):
|
||||
|
@ -1108,3 +1109,40 @@ async def test_unique_id_in_progress(hass, manager):
|
|||
|
||||
assert result2["type"] == data_entry_flow.RESULT_TYPE_ABORT
|
||||
assert result2["reason"] == "already_in_progress"
|
||||
|
||||
|
||||
async def test_finish_flow_aborts_progress(hass, manager):
|
||||
"""Test that when finishing a flow, we abort other flows in progress with unique ID."""
|
||||
mock_integration(
|
||||
hass,
|
||||
MockModule("comp", async_setup_entry=MagicMock(return_value=mock_coro(True))),
|
||||
)
|
||||
mock_entity_platform(hass, "config_flow.comp", None)
|
||||
|
||||
class TestFlow(config_entries.ConfigFlow):
|
||||
|
||||
VERSION = 1
|
||||
|
||||
async def async_step_user(self, user_input=None):
|
||||
await self.async_set_unique_id("mock-unique-id", raise_on_progress=False)
|
||||
|
||||
if user_input is None:
|
||||
return self.async_show_form(step_id="discovery")
|
||||
|
||||
return self.async_create_entry(title="yo", data={})
|
||||
|
||||
with patch.dict(config_entries.HANDLERS, {"comp": TestFlow}):
|
||||
# Create one to be in progress
|
||||
result = await manager.flow.async_init(
|
||||
"comp", context={"source": config_entries.SOURCE_USER}
|
||||
)
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
|
||||
|
||||
# Will finish and cancel other one.
|
||||
result2 = await manager.flow.async_init(
|
||||
"comp", context={"source": config_entries.SOURCE_USER}, data={}
|
||||
)
|
||||
|
||||
assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||
|
||||
assert len(hass.config_entries.flow.async_progress()) == 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue