Check color temp range for google assistant ()

pull/12996/head
Paulus Schoutsen 2018-03-08 17:43:41 -08:00 committed by GitHub
parent c4a4802a8c
commit 7f065e38a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 4 deletions
homeassistant/components/google_assistant
tests/components/google_assistant

View File

@ -330,9 +330,20 @@ class ColorTemperatureTrait(_Trait):
async def execute(self, hass, command, params):
"""Execute a color temperature command."""
temp = color_util.color_temperature_kelvin_to_mired(
params['color']['temperature'])
min_temp = self.state.attributes[light.ATTR_MIN_MIREDS]
max_temp = self.state.attributes[light.ATTR_MAX_MIREDS]
if temp < min_temp or temp > max_temp:
raise SmartHomeError(
ERR_VALUE_OUT_OF_RANGE,
"Temperature should be between {} and {}".format(min_temp,
max_temp))
await hass.services.async_call(light.DOMAIN, SERVICE_TURN_ON, {
ATTR_ENTITY_ID: self.state.entity_id,
light.ATTR_KELVIN: params['color']['temperature'],
light.ATTR_COLOR_TEMP: temp,
}, blocking=True)

View File

@ -15,7 +15,8 @@ from homeassistant.components import (
script,
switch,
)
from homeassistant.components.google_assistant import trait, helpers
from homeassistant.components.google_assistant import trait, helpers, const
from homeassistant.util import color
from tests.common import async_mock_service
@ -399,6 +400,15 @@ async def test_color_temperature_light(hass):
})
calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_ON)
with pytest.raises(helpers.SmartHomeError) as err:
await trt.execute(hass, trait.COMMAND_COLOR_ABSOLUTE, {
'color': {
'temperature': 5555
}
})
assert err.value.code == const.ERR_VALUE_OUT_OF_RANGE
await trt.execute(hass, trait.COMMAND_COLOR_ABSOLUTE, {
'color': {
'temperature': 2857
@ -407,7 +417,7 @@ async def test_color_temperature_light(hass):
assert len(calls) == 1
assert calls[0].data == {
ATTR_ENTITY_ID: 'light.bla',
light.ATTR_KELVIN: 2857
light.ATTR_COLOR_TEMP: color.color_temperature_kelvin_to_mired(2857)
}
@ -511,11 +521,12 @@ async def test_temperature_setting_climate_range(hass):
climate.ATTR_OPERATION_MODE: climate.STATE_AUTO,
}
with pytest.raises(helpers.SmartHomeError):
with pytest.raises(helpers.SmartHomeError) as err:
await trt.execute(
hass, trait.COMMAND_THERMOSTAT_TEMPERATURE_SETPOINT, {
'thermostatTemperatureSetpoint': -100,
})
assert err.value.code == const.ERR_VALUE_OUT_OF_RANGE
async def test_temperature_setting_climate_setpoint(hass):