ha-core/tests/components/coolmaster/test_climate.py

291 lines
8.7 KiB
Python

"""The test for the Coolmaster climate platform."""
from __future__ import annotations
from pycoolmasternet_async import SWING_MODES
import pytest
from homeassistant.components.climate import (
ATTR_CURRENT_TEMPERATURE,
ATTR_FAN_MODE,
ATTR_FAN_MODES,
ATTR_HVAC_MODE,
ATTR_HVAC_MODES,
ATTR_SWING_MODE,
ATTR_SWING_MODES,
DOMAIN as CLIMATE_DOMAIN,
FAN_HIGH,
FAN_LOW,
SERVICE_SET_FAN_MODE,
SERVICE_SET_HVAC_MODE,
SERVICE_SET_SWING_MODE,
SERVICE_SET_TEMPERATURE,
ClimateEntityFeature,
HVACMode,
)
from homeassistant.components.coolmaster.climate import FAN_MODES
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_FRIENDLY_NAME,
ATTR_SUPPORTED_FEATURES,
ATTR_TEMPERATURE,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
async def test_climate_state(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate state."""
assert hass.states.get("climate.l1_100").state == HVACMode.OFF
assert hass.states.get("climate.l1_101").state == HVACMode.HEAT
async def test_climate_friendly_name(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate friendly name."""
assert hass.states.get("climate.l1_100").attributes[ATTR_FRIENDLY_NAME] == "L1.100"
assert hass.states.get("climate.l1_101").attributes[ATTR_FRIENDLY_NAME] == "L1.101"
async def test_climate_supported_features(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate supported features."""
assert hass.states.get("climate.l1_100").attributes[ATTR_SUPPORTED_FEATURES] == (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
)
assert hass.states.get("climate.l1_101").attributes[ATTR_SUPPORTED_FEATURES] == (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.SWING_MODE
)
async def test_climate_temperature(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate current temperature."""
assert hass.states.get("climate.l1_100").attributes[ATTR_CURRENT_TEMPERATURE] == 25
assert hass.states.get("climate.l1_101").attributes[ATTR_CURRENT_TEMPERATURE] == 10
async def test_climate_thermostat(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate thermostat."""
assert hass.states.get("climate.l1_100").attributes[ATTR_TEMPERATURE] == 20
assert hass.states.get("climate.l1_101").attributes[ATTR_TEMPERATURE] == 20
async def test_climate_hvac_modes(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate hvac modes."""
assert hass.states.get("climate.l1_100").attributes[ATTR_HVAC_MODES] == [
HVACMode.OFF,
HVACMode.COOL,
HVACMode.HEAT,
]
assert (
hass.states.get("climate.l1_101").attributes[ATTR_HVAC_MODES]
== hass.states.get("climate.l1_100").attributes[ATTR_HVAC_MODES]
)
async def test_climate_fan_mode(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate fan mode."""
assert hass.states.get("climate.l1_100").attributes[ATTR_FAN_MODE] == FAN_LOW
assert hass.states.get("climate.l1_101").attributes[ATTR_FAN_MODE] == FAN_HIGH
async def test_climate_fan_modes(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate fan modes."""
assert hass.states.get("climate.l1_100").attributes[ATTR_FAN_MODES] == FAN_MODES
assert (
hass.states.get("climate.l1_101").attributes[ATTR_FAN_MODES]
== hass.states.get("climate.l1_100").attributes[ATTR_FAN_MODES]
)
async def test_climate_swing_mode(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate swing mode."""
assert ATTR_SWING_MODE not in hass.states.get("climate.l1_100").attributes
assert hass.states.get("climate.l1_101").attributes[ATTR_SWING_MODE] == "horizontal"
async def test_climate_swing_modes(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate swing modes."""
assert ATTR_SWING_MODES not in hass.states.get("climate.l1_100").attributes
assert hass.states.get("climate.l1_101").attributes[ATTR_SWING_MODES] == SWING_MODES
async def test_set_temperature(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set temperature."""
assert hass.states.get("climate.l1_100").attributes[ATTR_TEMPERATURE] == 20
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{
ATTR_ENTITY_ID: "climate.l1_100",
ATTR_TEMPERATURE: 30,
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_100").attributes[ATTR_TEMPERATURE] == 30
async def test_set_fan_mode(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set fan mode."""
assert hass.states.get("climate.l1_100").attributes[ATTR_FAN_MODE] == FAN_LOW
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_FAN_MODE,
{
ATTR_ENTITY_ID: "climate.l1_100",
ATTR_FAN_MODE: FAN_HIGH,
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_100").attributes[ATTR_FAN_MODE] == FAN_HIGH
async def test_set_swing_mode(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set swing mode."""
assert hass.states.get("climate.l1_101").attributes[ATTR_SWING_MODE] == "horizontal"
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_SWING_MODE,
{
ATTR_ENTITY_ID: "climate.l1_101",
ATTR_SWING_MODE: "vertical",
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_101").attributes[ATTR_SWING_MODE] == "vertical"
async def test_set_swing_mode_error(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set swing mode with error."""
with pytest.raises(HomeAssistantError):
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_SWING_MODE,
{
ATTR_ENTITY_ID: "climate.l1_101",
ATTR_SWING_MODE: "",
},
blocking=True,
)
async def test_set_hvac_mode(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set hvac mode."""
assert hass.states.get("climate.l1_100").state == HVACMode.OFF
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{
ATTR_ENTITY_ID: "climate.l1_100",
ATTR_HVAC_MODE: HVACMode.HEAT,
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_100").state == HVACMode.HEAT
async def test_set_hvac_mode_off(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate set hvac mode to off."""
assert hass.states.get("climate.l1_101").state == HVACMode.HEAT
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{
ATTR_ENTITY_ID: "climate.l1_101",
ATTR_HVAC_MODE: HVACMode.OFF,
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_101").state == HVACMode.OFF
async def test_turn_on(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate turn on."""
assert hass.states.get("climate.l1_100").state == HVACMode.OFF
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "climate.l1_100",
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_100").state == HVACMode.COOL
async def test_turn_off(
hass: HomeAssistant,
load_int: ConfigEntry,
) -> None:
"""Test the Coolmaster climate turn off."""
assert hass.states.get("climate.l1_101").state == HVACMode.HEAT
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_TURN_OFF,
{
ATTR_ENTITY_ID: "climate.l1_101",
},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("climate.l1_101").state == HVACMode.OFF