Use properties of wemo Insight device (#72316)
This commit is contained in:
parent
c4893f96f6
commit
cf5e21a996
6 changed files with 103 additions and 71 deletions
|
@ -1,17 +1,35 @@
|
|||
"""Tests for the Wemo switch entity."""
|
||||
|
||||
import pytest
|
||||
from pywemo.exceptions import ActionException
|
||||
import pywemo
|
||||
|
||||
from homeassistant.components.homeassistant import (
|
||||
DOMAIN as HA_DOMAIN,
|
||||
SERVICE_UPDATE_ENTITY,
|
||||
)
|
||||
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
|
||||
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON
|
||||
from homeassistant.components.wemo.switch import (
|
||||
ATTR_CURRENT_STATE_DETAIL,
|
||||
ATTR_ON_LATEST_TIME,
|
||||
ATTR_ON_TODAY_TIME,
|
||||
ATTR_ON_TOTAL_TIME,
|
||||
ATTR_POWER_THRESHOLD,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
STATE_STANDBY,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from . import entity_test_helpers
|
||||
from .conftest import (
|
||||
MOCK_INSIGHT_STATE_THRESHOLD_POWER,
|
||||
async_create_wemo_entity,
|
||||
create_pywemo_device,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -80,7 +98,7 @@ async def test_available_after_update(
|
|||
hass, pywemo_registry, pywemo_device, wemo_entity
|
||||
):
|
||||
"""Test the avaliability when an On call fails and after an update."""
|
||||
pywemo_device.on.side_effect = ActionException
|
||||
pywemo_device.on.side_effect = pywemo.exceptions.ActionException
|
||||
pywemo_device.get_state.return_value = 1
|
||||
await entity_test_helpers.test_avaliable_after_update(
|
||||
hass, pywemo_registry, pywemo_device, wemo_entity, SWITCH_DOMAIN
|
||||
|
@ -90,3 +108,42 @@ async def test_available_after_update(
|
|||
async def test_turn_off_state(hass, wemo_entity):
|
||||
"""Test that the device state is updated after turning off."""
|
||||
await entity_test_helpers.test_turn_off_state(hass, wemo_entity, SWITCH_DOMAIN)
|
||||
|
||||
|
||||
async def test_insight_state_attributes(hass, pywemo_registry):
|
||||
"""Verify the switch attributes are set for the Insight device."""
|
||||
await async_setup_component(hass, HA_DOMAIN, {})
|
||||
with create_pywemo_device(pywemo_registry, "Insight") as insight:
|
||||
wemo_entity = await async_create_wemo_entity(hass, insight, "")
|
||||
attributes = hass.states.get(wemo_entity.entity_id).attributes
|
||||
assert attributes[ATTR_ON_LATEST_TIME] == "00d 00h 20m 34s"
|
||||
assert attributes[ATTR_ON_TODAY_TIME] == "00d 01h 34m 38s"
|
||||
assert attributes[ATTR_ON_TOTAL_TIME] == "00d 02h 30m 12s"
|
||||
assert attributes[ATTR_POWER_THRESHOLD] == MOCK_INSIGHT_STATE_THRESHOLD_POWER
|
||||
assert attributes[ATTR_CURRENT_STATE_DETAIL] == STATE_OFF
|
||||
|
||||
async def async_update():
|
||||
await hass.services.async_call(
|
||||
HA_DOMAIN,
|
||||
SERVICE_UPDATE_ENTITY,
|
||||
{ATTR_ENTITY_ID: [wemo_entity.entity_id]},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
# Test 'ON' state detail value.
|
||||
insight.get_standby_state = pywemo.StandbyState.ON
|
||||
await async_update()
|
||||
attributes = hass.states.get(wemo_entity.entity_id).attributes
|
||||
assert attributes[ATTR_CURRENT_STATE_DETAIL] == STATE_ON
|
||||
|
||||
# Test 'STANDBY' state detail value.
|
||||
insight.get_standby_state = pywemo.StandbyState.STANDBY
|
||||
await async_update()
|
||||
attributes = hass.states.get(wemo_entity.entity_id).attributes
|
||||
assert attributes[ATTR_CURRENT_STATE_DETAIL] == STATE_STANDBY
|
||||
|
||||
# Test 'UNKNOWN' state detail value.
|
||||
insight.get_standby_state = None
|
||||
await async_update()
|
||||
attributes = hass.states.get(wemo_entity.entity_id).attributes
|
||||
assert attributes[ATTR_CURRENT_STATE_DETAIL] == STATE_UNKNOWN
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue