mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Handle availability in Idasen Desk height sensor (#120277)
This commit is contained in:
parent
9f4bf6f11a
commit
8ce53d28e7
@ -66,7 +66,7 @@ class IdasenDeskCover(CoordinatorEntity[IdasenDeskCoordinator], CoverEntity):
|
|||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
"""Return True if entity is available."""
|
"""Return True if entity is available."""
|
||||||
return self._desk.is_connected is True
|
return super().available and self._desk.is_connected is True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_closed(self) -> bool:
|
def is_closed(self) -> bool:
|
||||||
|
@ -79,12 +79,18 @@ class IdasenDeskSensor(CoordinatorEntity[IdasenDeskCoordinator], SensorEntity):
|
|||||||
self._attr_unique_id = f"{description.key}-{address}"
|
self._attr_unique_id = f"{description.key}-{address}"
|
||||||
self._attr_device_info = device_info
|
self._attr_device_info = device_info
|
||||||
self._address = address
|
self._address = address
|
||||||
|
self._desk = coordinator.desk
|
||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""When entity is added to hass."""
|
"""When entity is added to hass."""
|
||||||
await super().async_added_to_hass()
|
await super().async_added_to_hass()
|
||||||
self._update_native_value()
|
self._update_native_value()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self) -> bool:
|
||||||
|
"""Return True if entity is available."""
|
||||||
|
return super().available and self._desk.is_connected is True
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _handle_coordinator_update(self, *args: Any) -> None:
|
def _handle_coordinator_update(self, *args: Any) -> None:
|
||||||
"""Handle data update."""
|
"""Handle data update."""
|
||||||
|
@ -4,10 +4,13 @@ from unittest.mock import MagicMock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from homeassistant.const import STATE_UNAVAILABLE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import init_integration
|
from . import init_integration
|
||||||
|
|
||||||
|
EXPECTED_INITIAL_HEIGHT = "1"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
|
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
|
||||||
async def test_height_sensor(hass: HomeAssistant, mock_desk_api: MagicMock) -> None:
|
async def test_height_sensor(hass: HomeAssistant, mock_desk_api: MagicMock) -> None:
|
||||||
@ -17,7 +20,7 @@ async def test_height_sensor(hass: HomeAssistant, mock_desk_api: MagicMock) -> N
|
|||||||
entity_id = "sensor.test_height"
|
entity_id = "sensor.test_height"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "1"
|
assert state.state == EXPECTED_INITIAL_HEIGHT
|
||||||
|
|
||||||
mock_desk_api.height = 1.2
|
mock_desk_api.height = 1.2
|
||||||
mock_desk_api.trigger_update_callback(None)
|
mock_desk_api.trigger_update_callback(None)
|
||||||
@ -25,3 +28,24 @@ async def test_height_sensor(hass: HomeAssistant, mock_desk_api: MagicMock) -> N
|
|||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "1.2"
|
assert state.state == "1.2"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
|
||||||
|
async def test_sensor_available(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_desk_api: MagicMock,
|
||||||
|
) -> None:
|
||||||
|
"""Test sensor available property."""
|
||||||
|
await init_integration(hass)
|
||||||
|
|
||||||
|
entity_id = "sensor.test_height"
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state
|
||||||
|
assert state.state == EXPECTED_INITIAL_HEIGHT
|
||||||
|
|
||||||
|
mock_desk_api.is_connected = False
|
||||||
|
mock_desk_api.trigger_update_callback(None)
|
||||||
|
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state
|
||||||
|
assert state.state == STATE_UNAVAILABLE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user