Add homekit_controller tests (#20457)
* Add a test for a homekit_controller switch * Add a test for a homekit_controller lightbulb * Add a test for homekit_controller thermostat * Changes from review * Patch utcnow to known time in HK tests * Neater fixture use per review
This commit is contained in:
parent
7368c623d4
commit
10e3698fd7
9 changed files with 343 additions and 5 deletions
77
tests/components/homekit_controller/test_climate.py
Normal file
77
tests/components/homekit_controller/test_climate.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
"""Basic checks for HomeKitclimate."""
|
||||
from homeassistant.components.climate import (
|
||||
DOMAIN, SERVICE_SET_OPERATION_MODE, SERVICE_SET_TEMPERATURE)
|
||||
from tests.components.homekit_controller.common import (
|
||||
setup_test_component)
|
||||
|
||||
|
||||
HEATING_COOLING_TARGET = ('thermostat', 'heating-cooling.target')
|
||||
HEATING_COOLING_CURRENT = ('thermostat', 'heating-cooling.current')
|
||||
TEMPERATURE_TARGET = ('thermostat', 'temperature.target')
|
||||
TEMPERATURE_CURRENT = ('thermostat', 'temperature.current')
|
||||
|
||||
|
||||
async def test_climate_change_thermostat_state(hass, utcnow):
|
||||
"""Test that we can turn a HomeKit thermostat on and off again."""
|
||||
from homekit.model.services import ThermostatService
|
||||
|
||||
helper = await setup_test_component(hass, [ThermostatService()])
|
||||
|
||||
await hass.services.async_call(DOMAIN, SERVICE_SET_OPERATION_MODE, {
|
||||
'entity_id': 'climate.testdevice',
|
||||
'operation_mode': 'heat',
|
||||
}, blocking=True)
|
||||
|
||||
assert helper.characteristics[HEATING_COOLING_TARGET].value == 1
|
||||
|
||||
await hass.services.async_call(DOMAIN, SERVICE_SET_OPERATION_MODE, {
|
||||
'entity_id': 'climate.testdevice',
|
||||
'operation_mode': 'cool',
|
||||
}, blocking=True)
|
||||
assert helper.characteristics[HEATING_COOLING_TARGET].value == 2
|
||||
|
||||
|
||||
async def test_climate_change_thermostat_temperature(hass, utcnow):
|
||||
"""Test that we can turn a HomeKit thermostat on and off again."""
|
||||
from homekit.model.services import ThermostatService
|
||||
|
||||
helper = await setup_test_component(hass, [ThermostatService()])
|
||||
|
||||
await hass.services.async_call(DOMAIN, SERVICE_SET_TEMPERATURE, {
|
||||
'entity_id': 'climate.testdevice',
|
||||
'temperature': 21,
|
||||
}, blocking=True)
|
||||
assert helper.characteristics[TEMPERATURE_TARGET].value == 21
|
||||
|
||||
await hass.services.async_call(DOMAIN, SERVICE_SET_TEMPERATURE, {
|
||||
'entity_id': 'climate.testdevice',
|
||||
'temperature': 25,
|
||||
}, blocking=True)
|
||||
assert helper.characteristics[TEMPERATURE_TARGET].value == 25
|
||||
|
||||
|
||||
async def test_climate_read_thermostat_state(hass, utcnow):
|
||||
"""Test that we can read the state of a HomeKit thermostat accessory."""
|
||||
from homekit.model.services import ThermostatService
|
||||
|
||||
helper = await setup_test_component(hass, [ThermostatService()])
|
||||
|
||||
# Simulate that heating is on
|
||||
helper.characteristics[TEMPERATURE_CURRENT].value = 19
|
||||
helper.characteristics[TEMPERATURE_TARGET].value = 21
|
||||
helper.characteristics[HEATING_COOLING_CURRENT].value = 1
|
||||
helper.characteristics[HEATING_COOLING_TARGET].value = 1
|
||||
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == 'heat'
|
||||
assert state.attributes['current_temperature'] == 19
|
||||
|
||||
# Simulate that cooling is on
|
||||
helper.characteristics[TEMPERATURE_CURRENT].value = 21
|
||||
helper.characteristics[TEMPERATURE_TARGET].value = 19
|
||||
helper.characteristics[HEATING_COOLING_CURRENT].value = 2
|
||||
helper.characteristics[HEATING_COOLING_TARGET].value = 2
|
||||
|
||||
state = await helper.poll_and_get_state()
|
||||
assert state.state == 'cool'
|
||||
assert state.attributes['current_temperature'] == 21
|
Loading…
Add table
Add a link
Reference in a new issue