From ea657e6656362d144ade9e683e3f5d6762ad08db Mon Sep 17 00:00:00 2001 From: Teemu R Date: Thu, 4 Nov 2021 14:14:31 +0100 Subject: [PATCH] Accept all roborock vacuum models for xiaomi_miio (#59018) --- homeassistant/components/xiaomi_miio/const.py | 2 + .../xiaomi_miio/test_config_flow.py | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/homeassistant/components/xiaomi_miio/const.py b/homeassistant/components/xiaomi_miio/const.py index c140ad526e2..124bdb77f5e 100644 --- a/homeassistant/components/xiaomi_miio/const.py +++ b/homeassistant/components/xiaomi_miio/const.py @@ -202,6 +202,7 @@ ROCKROBO_S4_MAX = "roborock.vacuum.a19" ROCKROBO_S5_MAX = "roborock.vacuum.s5e" ROCKROBO_S6_PURE = "roborock.vacuum.a08" ROCKROBO_E2 = "roborock.vacuum.e2" +ROCKROBO_GENERIC = "roborock.vacuum" MODELS_VACUUM = [ ROCKROBO_V1, ROCKROBO_E2, @@ -213,6 +214,7 @@ MODELS_VACUUM = [ ROCKROBO_S6_MAXV, ROCKROBO_S6_PURE, ROCKROBO_S7, + ROCKROBO_GENERIC, ] MODELS_VACUUM_WITH_MOP = [ ROCKROBO_E2, diff --git a/tests/components/xiaomi_miio/test_config_flow.py b/tests/components/xiaomi_miio/test_config_flow.py index 24aa5ac04e4..206da7ad4ae 100644 --- a/tests/components/xiaomi_miio/test_config_flow.py +++ b/tests/components/xiaomi_miio/test_config_flow.py @@ -695,6 +695,52 @@ async def config_flow_device_success(hass, model_to_test): } +async def config_flow_generic_roborock(hass): + """Test a successful config flow for a generic roborock vacuum.""" + DUMMY_MODEL = "roborock.vacuum.dummy" + + result = await hass.config_entries.flow.async_init( + const.DOMAIN, context={"source": config_entries.SOURCE_USER} + ) + + assert result["type"] == "form" + assert result["step_id"] == "cloud" + assert result["errors"] == {} + + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + {const.CONF_MANUAL: True}, + ) + + assert result["type"] == "form" + assert result["step_id"] == "manual" + assert result["errors"] == {} + + mock_info = get_mock_info(model=DUMMY_MODEL) + + with patch( + "homeassistant.components.xiaomi_miio.device.Device.info", + return_value=mock_info, + ): + result = await hass.config_entries.flow.async_configure( + result["flow_id"], + {CONF_HOST: TEST_HOST, CONF_TOKEN: TEST_TOKEN}, + ) + + assert result["type"] == "create_entry" + assert result["title"] == DUMMY_MODEL + assert result["data"] == { + const.CONF_FLOW_TYPE: const.CONF_DEVICE, + const.CONF_CLOUD_USERNAME: None, + const.CONF_CLOUD_PASSWORD: None, + const.CONF_CLOUD_COUNTRY: None, + CONF_HOST: TEST_HOST, + CONF_TOKEN: TEST_TOKEN, + const.CONF_MODEL: DUMMY_MODEL, + const.CONF_MAC: TEST_MAC, + } + + async def zeroconf_device_success(hass, zeroconf_name_to_test, model_to_test): """Test a successful zeroconf discovery of a device (base class).""" result = await hass.config_entries.flow.async_init(