Compare commits

...

1 Commits

Author SHA1 Message Date
Franck Nijhof
eb64589115 Translate coordinator exceptions for Tailwind (#168027) 2026-04-12 18:45:37 +02:00
4 changed files with 30 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ from datetime import timedelta
from gotailwind import (
Tailwind,
TailwindAuthenticationError,
TailwindConnectionError,
TailwindDeviceStatus,
TailwindError,
)
@@ -45,5 +46,13 @@ class TailwindDataUpdateCoordinator(DataUpdateCoordinator[TailwindDeviceStatus])
return await self.tailwind.status()
except TailwindAuthenticationError as err:
raise ConfigEntryAuthFailed from err
except TailwindConnectionError as err:
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="communication_error",
) from err
except TailwindError as err:
raise UpdateFailed(err) from err
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="unknown_error",
) from err

View File

@@ -55,10 +55,7 @@ rules:
entity-device-class: done
entity-disabled-by-default: done
entity-translations: done
exception-translations:
status: exempt
comment: |
The coordinator needs translation when the update failed.
exception-translations: done
icon-translations: done
reconfiguration-flow: done
repair-issues:

View File

@@ -83,6 +83,9 @@
},
"door_locked_out": {
"message": "The door is locked out and cannot be operated."
},
"unknown_error": {
"message": "An unknown error occurred while communicating with the Tailwind device."
}
}
}

View File

@@ -2,7 +2,12 @@
from unittest.mock import MagicMock
from gotailwind import TailwindAuthenticationError, TailwindConnectionError
from gotailwind import (
TailwindAuthenticationError,
TailwindConnectionError,
TailwindError,
)
import pytest
from homeassistant.components.tailwind.const import DOMAIN
from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntryState
@@ -31,13 +36,22 @@ async def test_load_unload_config_entry(
assert mock_config_entry.state is ConfigEntryState.NOT_LOADED
@pytest.mark.parametrize(
("side_effect", "expected_translation_key"),
[
(TailwindConnectionError, "communication_error"),
(TailwindError, "unknown_error"),
],
)
async def test_config_entry_not_ready(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_tailwind: MagicMock,
side_effect: type[Exception],
expected_translation_key: str,
) -> None:
"""Test the Tailwind configuration entry not ready."""
mock_tailwind.status.side_effect = TailwindConnectionError
mock_tailwind.status.side_effect = side_effect
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)