Tweaks to options flow (#25969)

This commit is contained in:
Paulus Schoutsen 2019-08-15 14:11:55 -07:00 committed by GitHub
parent 9b3aa9bbd1
commit 8a1ab8c0b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 21 deletions

View File

@ -187,8 +187,8 @@ class ConfigManagerAvailableFlowView(HomeAssistantView):
class OptionManagerFlowIndexView(FlowManagerIndexView):
"""View to create option flows."""
url = "/api/config/config_entries/entry/option/flow"
name = "api:config:config_entries:entry:resource:option:flow"
url = "/api/config/config_entries/options/flow"
name = "api:config:config_entries:option:flow"
# pylint: disable=arguments-differ
async def post(self, request):

View File

@ -658,6 +658,12 @@ class ConfigFlow(data_entry_flow.FlowHandler):
CONNECTION_CLASS = CONN_CLASS_UNKNOWN
@staticmethod
@callback
def async_get_options_flow(config_entry):
"""Get the options flow for this handler."""
raise data_entry_flow.UnknownHandler
@callback
def _async_current_entries(self):
"""Return current entries."""
@ -691,7 +697,11 @@ class OptionsFlowManager:
entry = self.hass.config_entries.async_get_entry(entry_id)
if entry is None:
return
flow = HANDLERS[entry.domain].async_get_options_flow(entry.data, entry.options)
if entry.domain not in HANDLERS:
raise data_entry_flow.UnknownHandler
flow = HANDLERS[entry.domain].async_get_options_flow(entry)
return flow
async def _async_finish_flow(self, flow, result):
@ -706,3 +716,9 @@ class OptionsFlowManager:
result["result"] = True
return result
class OptionsFlow(data_entry_flow.FlowHandler):
"""Base class for config option flows."""
pass

View File

@ -488,12 +488,8 @@ async def test_options_flow(hass, client):
class TestFlow(core_ce.ConfigFlow):
@staticmethod
@callback
def async_get_options_flow(config, options):
def async_get_options_flow(config_entry):
class OptionsFlowHandler(data_entry_flow.FlowHandler):
def __init__(self, config, options):
self.config = config
self.options = options
async def async_step_init(self, user_input=None):
schema = OrderedDict()
schema[vol.Required("enabled")] = bool
@ -503,7 +499,7 @@ async def test_options_flow(hass, client):
description_placeholders={"enabled": "Set to true to be true"},
)
return OptionsFlowHandler(config, options)
return OptionsFlowHandler()
MockConfigEntry(
domain="test",
@ -514,7 +510,7 @@ async def test_options_flow(hass, client):
entry = hass.config_entries._entries[0]
with patch.dict(HANDLERS, {"test": TestFlow}):
url = "/api/config/config_entries/entry/option/flow"
url = "/api/config/config_entries/options/flow"
resp = await client.post(url, json={"handler": entry.entry_id})
assert resp.status == 200
@ -538,12 +534,8 @@ async def test_two_step_options_flow(hass, client):
class TestFlow(core_ce.ConfigFlow):
@staticmethod
@callback
def async_get_options_flow(config, options):
def async_get_options_flow(config_entry):
class OptionsFlowHandler(data_entry_flow.FlowHandler):
def __init__(self, config, options):
self.config = config
self.options = options
async def async_step_init(self, user_input=None):
return self.async_show_form(
step_id="finish", data_schema=vol.Schema({"enabled": bool})
@ -554,7 +546,7 @@ async def test_two_step_options_flow(hass, client):
title="Enable disable", data=user_input
)
return OptionsFlowHandler(config, options)
return OptionsFlowHandler()
MockConfigEntry(
domain="test",
@ -565,7 +557,7 @@ async def test_two_step_options_flow(hass, client):
entry = hass.config_entries._entries[0]
with patch.dict(HANDLERS, {"test": TestFlow}):
url = "/api/config/config_entries/entry/option/flow"
url = "/api/config/config_entries/options/flow"
resp = await client.post(url, json={"handler": entry.entry_id})
assert resp.status == 200

View File

@ -666,12 +666,11 @@ async def test_entry_options(hass, manager):
class TestFlow:
@staticmethod
@callback
def async_get_options_flow(config, options):
def async_get_options_flow(config_entry):
class OptionsFlowHandler(data_entry_flow.FlowHandler):
def __init__(self, config, options):
pass
pass
return OptionsFlowHandler(config, options)
return OptionsFlowHandler()
config_entries.HANDLERS["test"] = TestFlow()
flow = await manager.options._async_create_flow(