1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-21 01:09:53 +01:00

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 13:48:46 +01:00
committed by GitHub
parent d6f6961674
commit 40ed0562bc
12 changed files with 208 additions and 12 deletions

View File

@@ -3,8 +3,9 @@
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
from homeassistant.components.airgradient.const import DOMAIN
@@ -16,6 +17,7 @@ from homeassistant.const import (
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import entity_registry as er
from . import setup_integration
@@ -99,3 +101,36 @@ async def test_cloud_creates_no_switch(
await hass.async_block_till_done()
assert len(hass.states.async_all()) == 0
@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.enable_sharing_data.side_effect = exception
with pytest.raises(HomeAssistantError, match=error_message):
await hass.services.async_call(
SWITCH_DOMAIN,
SERVICE_TURN_ON,
target={ATTR_ENTITY_ID: "switch.airgradient_post_data_to_airgradient"},
blocking=True,
)