mirror of
https://github.com/home-assistant/core.git
synced 2025-07-30 00:27:19 +00:00
Add connection-closed exception and test
This commit is contained in:
parent
45708c6f9b
commit
38cf88f46c
@ -57,7 +57,13 @@ class HomeeEntity(Entity):
|
|||||||
async def async_set_value(self, value: float) -> None:
|
async def async_set_value(self, value: float) -> None:
|
||||||
"""Set an attribute value on the homee node."""
|
"""Set an attribute value on the homee node."""
|
||||||
homee = self._entry.runtime_data
|
homee = self._entry.runtime_data
|
||||||
await homee.set_value(self._attribute.node_id, self._attribute.id, value)
|
try:
|
||||||
|
await homee.set_value(self._attribute.node_id, self._attribute.id, value)
|
||||||
|
except ConnectionClosed as exception:
|
||||||
|
raise HomeAssistantError(
|
||||||
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="connection_closed",
|
||||||
|
) from exception
|
||||||
|
|
||||||
async def async_update(self) -> None:
|
async def async_update(self) -> None:
|
||||||
"""Update entity from homee."""
|
"""Update entity from homee."""
|
||||||
|
@ -2,8 +2,12 @@
|
|||||||
|
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
import pytest
|
||||||
from syrupy.assertion import SnapshotAssertion
|
from syrupy.assertion import SnapshotAssertion
|
||||||
|
from websockets import frames
|
||||||
|
from websockets.exceptions import ConnectionClosed
|
||||||
|
|
||||||
|
from homeassistant.components.homee.const import DOMAIN
|
||||||
from homeassistant.components.switch import (
|
from homeassistant.components.switch import (
|
||||||
DOMAIN as SWITCH_DOMAIN,
|
DOMAIN as SWITCH_DOMAIN,
|
||||||
SERVICE_TURN_OFF,
|
SERVICE_TURN_OFF,
|
||||||
@ -13,6 +17,7 @@ from homeassistant.components.switch import (
|
|||||||
)
|
)
|
||||||
from homeassistant.const import ATTR_ENTITY_ID, Platform
|
from homeassistant.const import ATTR_ENTITY_ID, Platform
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers import entity_registry as er
|
from homeassistant.helpers import entity_registry as er
|
||||||
|
|
||||||
from . import build_mock_node, setup_integration
|
from . import build_mock_node, setup_integration
|
||||||
@ -116,6 +121,31 @@ async def test_switch_device_class_no_outlet(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_send_error(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_homee: MagicMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
) -> None:
|
||||||
|
"""Test failed set_value command."""
|
||||||
|
mock_homee.nodes = [build_mock_node("switches.json")]
|
||||||
|
mock_homee.get_node_by_id.return_value = mock_homee.nodes[0]
|
||||||
|
await setup_integration(hass, mock_config_entry)
|
||||||
|
|
||||||
|
mock_homee.set_value.side_effect = ConnectionClosed(
|
||||||
|
rcvd=frames.Close(1002, "Protocol Error"), sent=None
|
||||||
|
)
|
||||||
|
with pytest.raises(HomeAssistantError) as exc_info:
|
||||||
|
await hass.services.async_call(
|
||||||
|
SWITCH_DOMAIN,
|
||||||
|
SERVICE_TURN_ON,
|
||||||
|
{ATTR_ENTITY_ID: "switch.test_switch_switch_1"},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert exc_info.value.translation_domain == DOMAIN
|
||||||
|
assert exc_info.value.translation_key == "connection_closed"
|
||||||
|
|
||||||
|
|
||||||
async def test_switch_snapshot(
|
async def test_switch_snapshot(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
mock_homee: MagicMock,
|
mock_homee: MagicMock,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user