Add translated action exceptions to Airgradient (#136322)

* Add translated action exceptions to Airgradient

* Add translated action exceptions to Airgradient
This commit is contained in:
Joost Lekkerkerker
2025-01-23 14:48:46 +02:00
committed by GitHub
parent d6f6961674
commit 40ed0562bc
12 changed files with 208 additions and 12 deletions
+38 -1
View File
@@ -3,7 +3,7 @@
from datetime import timedelta
from unittest.mock import AsyncMock, patch
from airgradient import Config
from airgradient import AirGradientConnectionError, AirGradientError, Config
from freezegun.api import FrozenDateTimeFactory
import pytest
from syrupy import SnapshotAssertion
@@ -15,6 +15,7 @@ from homeassistant.components.select import (
)
from homeassistant.const import ATTR_ENTITY_ID, ATTR_OPTION, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import entity_registry as er
from . import setup_integration
@@ -94,3 +95,39 @@ async def test_cloud_creates_no_number(
await hass.async_block_till_done()
assert len(hass.states.async_all()) == 1
@pytest.mark.parametrize(
("exception", "error_message"),
[
(
AirGradientConnectionError("Something happened"),
"An error occurred while communicating with the Airgradient device: Something happened",
),
(
AirGradientError("Something else happened"),
"An unknown error occurred while communicating with the Airgradient device: Something else happened",
),
],
)
async def test_exception_handling(
hass: HomeAssistant,
mock_airgradient_client: AsyncMock,
mock_config_entry: MockConfigEntry,
exception: Exception,
error_message: str,
) -> None:
"""Test exception handling."""
await setup_integration(hass, mock_config_entry)
mock_airgradient_client.set_configuration_control.side_effect = exception
with pytest.raises(HomeAssistantError, match=error_message):
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{
ATTR_ENTITY_ID: "select.airgradient_configuration_source",
ATTR_OPTION: "local",
},
blocking=True,
)