291 lines
8.7 KiB
Python
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
|