Skip to content

Commit 3eec77c

Browse files
committed
Support devices without /unit_info
Fixes #8
1 parent c52ecf1 commit 3eec77c

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

custom_components/mitsubishi/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import logging
66

7+
import requests.exceptions
78
from homeassistant.config_entries import ConfigEntry
89
from homeassistant.const import CONF_HOST, Platform
910
from homeassistant.core import HomeAssistant
@@ -64,7 +65,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
6465
coordinator = MitsubishiDataUpdateCoordinator(hass, controller, scan_interval)
6566

6667
# Fetch unit info for device registry enrichment
67-
unit_info = await coordinator.get_unit_info()
68+
try:
69+
unit_info = await coordinator.get_unit_info()
70+
except requests.exceptions.HTTPError:
71+
unit_info = {}
6872

6973
# Fetch initial data
7074
await coordinator.async_config_entry_first_refresh()

tests/test_helpers.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,39 @@ async def test_async_setup_entry_with_comprehensive_unit_info(
9696
assert "CP: 01.08" in sw_version
9797

9898

99+
@pytest.mark.asyncio
100+
async def test_async_setup_entry_without_unit_info(hass, mock_config_entry, mock_coordinator):
101+
"""Test setup with failing unit info"""
102+
103+
with (
104+
patch("custom_components.mitsubishi.MitsubishiController") as mock_controller_class,
105+
patch(
106+
"custom_components.mitsubishi.MitsubishiDataUpdateCoordinator",
107+
return_value=mock_coordinator,
108+
),
109+
patch("custom_components.mitsubishi.dr.async_get") as mock_device_registry,
110+
patch.object(hass.config_entries, "async_forward_entry_setups", return_value=None),
111+
):
112+
mock_controller = MagicMock()
113+
mock_controller.fetch_status = MagicMock(return_value=True)
114+
mock_controller_class.return_value = mock_controller
115+
116+
# Mock device registry
117+
mock_registry = MagicMock()
118+
mock_device_registry.return_value = mock_registry
119+
120+
mock_coordinator.get_unit_info = MagicMock(
121+
side_effect=requests.exceptions.HTTPError("404 Client Error: Not Found for url")
122+
)
123+
124+
result = await async_setup_entry(hass, mock_config_entry)
125+
126+
assert result is True
127+
128+
# Verify device registry was called with comprehensive info
129+
mock_registry.async_get_or_create.assert_called_once()
130+
131+
99132
@pytest.mark.asyncio
100133
async def test_async_setup_entry_connection_failure(hass, mock_config_entry):
101134
"""Test setup when connection to device fails."""

0 commit comments

Comments
 (0)