Added vacuum dock and pause/unpause traits (#17657)

This commit is contained in:
Mariusz Łuciów 2018-10-26 23:02:07 +02:00 committed by Paulus Schoutsen
parent 9f146a3954
commit cfbd84f450
4 changed files with 174 additions and 3 deletions

View file

@ -3,7 +3,7 @@ import pytest
from homeassistant.const import (
STATE_ON, STATE_OFF, ATTR_ENTITY_ID, SERVICE_TURN_ON, SERVICE_TURN_OFF,
TEMP_CELSIUS, TEMP_FAHRENHEIT)
TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_SUPPORTED_FEATURES)
from homeassistant.core import State, DOMAIN as HA_DOMAIN
from homeassistant.components import (
climate,
@ -15,6 +15,7 @@ from homeassistant.components import (
scene,
script,
switch,
vacuum,
)
from homeassistant.components.google_assistant import trait, helpers, const
from homeassistant.util import color
@ -357,6 +358,75 @@ async def test_onoff_media_player(hass):
}
async def test_dock_vacuum(hass):
"""Test dock trait support for vacuum domain."""
assert trait.DockTrait.supported(vacuum.DOMAIN, 0)
trt = trait.DockTrait(hass, State('vacuum.bla', vacuum.STATE_IDLE))
assert trt.sync_attributes() == {}
assert trt.query_attributes() == {
'isDocked': False
}
calls = async_mock_service(hass, vacuum.DOMAIN,
vacuum.SERVICE_RETURN_TO_BASE)
await trt.execute(trait.COMMAND_DOCK, {})
assert len(calls) == 1
assert calls[0].data == {
ATTR_ENTITY_ID: 'vacuum.bla',
}
async def test_startstop_vacuum(hass):
"""Test startStop trait support for vacuum domain."""
assert trait.StartStopTrait.supported(vacuum.DOMAIN, 0)
trt = trait.StartStopTrait(hass, State('vacuum.bla', vacuum.STATE_PAUSED, {
ATTR_SUPPORTED_FEATURES: vacuum.SUPPORT_PAUSE,
}))
assert trt.sync_attributes() == {'pausable': True}
assert trt.query_attributes() == {
'isRunning': False,
'isPaused': True
}
start_calls = async_mock_service(hass, vacuum.DOMAIN,
vacuum.SERVICE_START)
await trt.execute(trait.COMMAND_STARTSTOP, {'start': True})
assert len(start_calls) == 1
assert start_calls[0].data == {
ATTR_ENTITY_ID: 'vacuum.bla',
}
stop_calls = async_mock_service(hass, vacuum.DOMAIN,
vacuum.SERVICE_STOP)
await trt.execute(trait.COMMAND_STARTSTOP, {'start': False})
assert len(stop_calls) == 1
assert stop_calls[0].data == {
ATTR_ENTITY_ID: 'vacuum.bla',
}
pause_calls = async_mock_service(hass, vacuum.DOMAIN,
vacuum.SERVICE_PAUSE)
await trt.execute(trait.COMMAND_PAUSEUNPAUSE, {'pause': True})
assert len(pause_calls) == 1
assert pause_calls[0].data == {
ATTR_ENTITY_ID: 'vacuum.bla',
}
unpause_calls = async_mock_service(hass, vacuum.DOMAIN,
vacuum.SERVICE_START)
await trt.execute(trait.COMMAND_PAUSEUNPAUSE, {'pause': False})
assert len(unpause_calls) == 1
assert unpause_calls[0].data == {
ATTR_ENTITY_ID: 'vacuum.bla',
}
async def test_color_spectrum_light(hass):
"""Test ColorSpectrum trait support for light domain."""
assert not trait.ColorSpectrumTrait.supported(light.DOMAIN, 0)