@@ -1168,7 +1168,7 @@ async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None):
11681168
11691169
11701170@pytest .mark .usefixtures ("supervisor" , "addon_not_installed" , "addon_info" )
1171- async def test_esphome_discovery (
1171+ async def test_esphome_discovery_intent_custom (
11721172 hass : HomeAssistant ,
11731173 install_addon : AsyncMock ,
11741174 set_addon_options : AsyncMock ,
@@ -1290,6 +1290,82 @@ async def test_esphome_discovery(
12901290 assert len (mock_setup_entry .mock_calls ) == 1
12911291
12921292
1293+ @pytest .mark .usefixtures ("supervisor" , "addon_installed" , "addon_running" , "addon_info" )
1294+ async def test_esphome_discovery_intent_recommended (
1295+ hass : HomeAssistant ,
1296+ set_addon_options : AsyncMock ,
1297+ addon_options : dict ,
1298+ ) -> None :
1299+ """Test ESPHome discovery success path."""
1300+ addon_options .update (
1301+ {
1302+ CONF_ADDON_DEVICE : "/dev/ttyUSB0" ,
1303+ CONF_ADDON_SOCKET : None ,
1304+ "s0_legacy_key" : "new123" ,
1305+ "s2_access_control_key" : "new456" ,
1306+ "s2_authenticated_key" : "new789" ,
1307+ "s2_unauthenticated_key" : "new987" ,
1308+ "lr_s2_access_control_key" : "new654" ,
1309+ "lr_s2_authenticated_key" : "new321" ,
1310+ }
1311+ )
1312+ result = await hass .config_entries .flow .async_init (
1313+ DOMAIN ,
1314+ context = {"source" : config_entries .SOURCE_ESPHOME },
1315+ data = ESPHOME_DISCOVERY_INFO ,
1316+ )
1317+
1318+ assert result ["type" ] is FlowResultType .MENU
1319+ assert result ["step_id" ] == "installation_type"
1320+ assert result ["menu_options" ] == ["intent_recommended" , "intent_custom" ]
1321+
1322+ with (
1323+ patch (
1324+ "homeassistant.components.zwave_js.async_setup" , return_value = True
1325+ ) as mock_setup ,
1326+ patch (
1327+ "homeassistant.components.zwave_js.async_setup_entry" ,
1328+ return_value = True ,
1329+ ) as mock_setup_entry ,
1330+ ):
1331+ result = await hass .config_entries .flow .async_configure (
1332+ result ["flow_id" ], {"next_step_id" : "intent_recommended" }
1333+ )
1334+
1335+ assert result ["type" ] is FlowResultType .CREATE_ENTRY
1336+ assert result ["title" ] == TITLE
1337+ assert result ["result" ].unique_id == str (ESPHOME_DISCOVERY_INFO .zwave_home_id )
1338+ assert result ["data" ] == {
1339+ "url" : "ws://host1:3001" ,
1340+ "usb_path" : None ,
1341+ "socket_path" : "esphome://192.168.1.100:6053" ,
1342+ "s0_legacy_key" : "new123" ,
1343+ "s2_access_control_key" : "new456" ,
1344+ "s2_authenticated_key" : "new789" ,
1345+ "s2_unauthenticated_key" : "new987" ,
1346+ "lr_s2_access_control_key" : "new654" ,
1347+ "lr_s2_authenticated_key" : "new321" ,
1348+ "use_addon" : True ,
1349+ "integration_created_addon" : False ,
1350+ }
1351+ assert set_addon_options .call_args == call (
1352+ "core_zwave_js" ,
1353+ AddonsOptions (
1354+ config = {
1355+ "socket" : "esphome://192.168.1.100:6053" ,
1356+ "s0_legacy_key" : "new123" ,
1357+ "s2_access_control_key" : "new456" ,
1358+ "s2_authenticated_key" : "new789" ,
1359+ "s2_unauthenticated_key" : "new987" ,
1360+ "lr_s2_access_control_key" : "new654" ,
1361+ "lr_s2_authenticated_key" : "new321" ,
1362+ }
1363+ ),
1364+ )
1365+ assert len (mock_setup .mock_calls ) == 1
1366+ assert len (mock_setup_entry .mock_calls ) == 1
1367+
1368+
12931369@pytest .mark .usefixtures ("supervisor" , "addon_installed" , "addon_info" )
12941370async def test_esphome_discovery_already_configured (
12951371 hass : HomeAssistant ,
0 commit comments