home-assistant-core/tests/components/ecobee/test_humidifier.py

135 lines
4.3 KiB
Python
Raw Normal View History

2021-04-12 21:44:13 +00:00
"""The test for the ecobee thermostat humidifier module."""
from unittest.mock import patch
import pytest
from homeassistant.components.ecobee.humidifier import MODE_MANUAL, MODE_OFF
from homeassistant.components.humidifier import (
2021-04-12 21:44:13 +00:00
ATTR_AVAILABLE_MODES,
ATTR_HUMIDITY,
ATTR_MAX_HUMIDITY,
ATTR_MIN_HUMIDITY,
DEFAULT_MAX_HUMIDITY,
DEFAULT_MIN_HUMIDITY,
DOMAIN as HUMIDIFIER_DOMAIN,
2021-04-12 21:44:13 +00:00
MODE_AUTO,
SERVICE_SET_HUMIDITY,
SERVICE_SET_MODE,
HumidifierDeviceClass,
HumidifierEntityFeature,
2021-04-12 21:44:13 +00:00
)
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ENTITY_ID,
ATTR_FRIENDLY_NAME,
ATTR_MODE,
ATTR_SUPPORTED_FEATURES,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
STATE_OFF,
STATE_ON,
2021-04-12 21:44:13 +00:00
)
from homeassistant.core import HomeAssistant
2021-04-12 21:44:13 +00:00
from .common import setup_platform
DEVICE_ID = "humidifier.ecobee"
async def test_attributes(hass: HomeAssistant) -> None:
2021-04-12 21:44:13 +00:00
"""Test the humidifier attributes are correct."""
await setup_platform(hass, HUMIDIFIER_DOMAIN)
state = hass.states.get(DEVICE_ID)
assert state.state == STATE_ON
2021-04-12 21:44:13 +00:00
assert state.attributes.get(ATTR_MIN_HUMIDITY) == DEFAULT_MIN_HUMIDITY
assert state.attributes.get(ATTR_MAX_HUMIDITY) == DEFAULT_MAX_HUMIDITY
assert state.attributes.get(ATTR_HUMIDITY) == 40
assert state.attributes.get(ATTR_AVAILABLE_MODES) == [
MODE_OFF,
MODE_AUTO,
MODE_MANUAL,
]
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "ecobee"
assert state.attributes.get(ATTR_DEVICE_CLASS) == HumidifierDeviceClass.HUMIDIFIER
assert (
state.attributes.get(ATTR_SUPPORTED_FEATURES) == HumidifierEntityFeature.MODES
)
2021-04-12 21:44:13 +00:00
async def test_turn_on(hass: HomeAssistant) -> None:
"""Test the humidifier can be turned on."""
2021-04-12 21:44:13 +00:00
with patch("pyecobee.Ecobee.set_humidifier_mode") as mock_turn_on:
await setup_platform(hass, HUMIDIFIER_DOMAIN)
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: DEVICE_ID},
blocking=True,
)
await hass.async_block_till_done()
mock_turn_on.assert_called_once_with(0, "manual")
async def test_turn_off(hass: HomeAssistant) -> None:
"""Test the humidifier can be turned off."""
2021-04-12 21:44:13 +00:00
with patch("pyecobee.Ecobee.set_humidifier_mode") as mock_turn_off:
await setup_platform(hass, HUMIDIFIER_DOMAIN)
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: DEVICE_ID},
blocking=True,
)
await hass.async_block_till_done()
mock_turn_off.assert_called_once_with(0, STATE_OFF)
async def test_set_mode(hass: HomeAssistant) -> None:
"""Test the humidifier can change modes."""
2021-04-12 21:44:13 +00:00
with patch("pyecobee.Ecobee.set_humidifier_mode") as mock_set_mode:
await setup_platform(hass, HUMIDIFIER_DOMAIN)
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_SET_MODE,
{ATTR_ENTITY_ID: DEVICE_ID, ATTR_MODE: MODE_AUTO},
blocking=True,
)
await hass.async_block_till_done()
mock_set_mode.assert_called_once_with(0, MODE_AUTO)
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_SET_MODE,
{ATTR_ENTITY_ID: DEVICE_ID, ATTR_MODE: MODE_MANUAL},
blocking=True,
)
await hass.async_block_till_done()
mock_set_mode.assert_called_with(0, MODE_MANUAL)
with pytest.raises(ValueError):
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_SET_MODE,
{ATTR_ENTITY_ID: DEVICE_ID, ATTR_MODE: "ModeThatDoesntExist"},
blocking=True,
)
async def test_set_humidity(hass: HomeAssistant) -> None:
"""Test the humidifier can set humidity level."""
2021-04-12 21:44:13 +00:00
with patch("pyecobee.Ecobee.set_humidity") as mock_set_humidity:
await setup_platform(hass, HUMIDIFIER_DOMAIN)
await hass.services.async_call(
HUMIDIFIER_DOMAIN,
SERVICE_SET_HUMIDITY,
{ATTR_ENTITY_ID: DEVICE_ID, ATTR_HUMIDITY: 60},
blocking=True,
)
await hass.async_block_till_done()
mock_set_humidity.assert_called_once_with(0, 60)