Use climate enums in freedompro (#70651)

* Use climate enums in freedompro

* Adjust tests

* Adjust type hints
This commit is contained in:
epenet 2022-04-25 13:33:19 +02:00 committed by GitHub
parent 2efc25c7ca
commit 0fd2a7dc83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 23 deletions

View File

@ -1,15 +1,16 @@
"""Support for Freedompro climate."""
from __future__ import annotations
import json
import logging
from pyfreedompro import put_state
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
from homeassistant.components.climate import ClimateEntity
from homeassistant.components.climate.const import (
ATTR_HVAC_MODE,
HVAC_MODE_COOL,
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
ClimateEntityFeature,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, CONF_API_KEY, TEMP_CELSIUS
@ -24,14 +25,18 @@ from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
HVAC_MAP = {
0: HVAC_MODE_OFF,
1: HVAC_MODE_HEAT,
2: HVAC_MODE_COOL,
0: HVACMode.OFF,
1: HVACMode.HEAT,
2: HVACMode.COOL,
}
HVAC_INVERT_MAP = {v: k for k, v in HVAC_MAP.items()}
SUPPORTED_HVAC_MODES = [HVAC_MODE_OFF, HVAC_MODE_HEAT, HVAC_MODE_COOL]
SUPPORTED_HVAC_MODES = [
HVACMode.OFF,
HVACMode.HEAT,
HVACMode.COOL,
]
async def async_setup_entry(
@ -74,7 +79,7 @@ class Device(CoordinatorEntity, ClimateEntity):
self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
self._attr_current_temperature = 0
self._attr_target_temperature = 0
self._attr_hvac_mode = HVAC_MODE_OFF
self._attr_hvac_mode = HVACMode.OFF
@callback
def _handle_coordinator_update(self) -> None:

View File

@ -1,5 +1,4 @@
"""Tests for the Freedompro climate."""
from datetime import timedelta
from unittest.mock import ANY, patch
@ -13,13 +12,10 @@ from homeassistant.components.climate import (
ATTR_MIN_TEMP,
ATTR_TEMPERATURE,
DOMAIN as CLIMATE_DOMAIN,
HVAC_MODE_COOL,
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
SERVICE_SET_HVAC_MODE,
SERVICE_SET_TEMPERATURE,
)
from homeassistant.components.climate.const import HVAC_MODE_AUTO
from homeassistant.components.climate.const import HVACMode
from homeassistant.const import ATTR_ENTITY_ID
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.util.dt import utcnow
@ -48,9 +44,9 @@ async def test_climate_get_state(hass, init_integration):
assert state.attributes.get("friendly_name") == "thermostat"
assert state.attributes[ATTR_HVAC_MODES] == [
HVAC_MODE_OFF,
HVAC_MODE_HEAT,
HVAC_MODE_COOL,
HVACMode.OFF,
HVACMode.HEAT,
HVACMode.COOL,
]
assert state.attributes[ATTR_MIN_TEMP] == 7
@ -58,7 +54,7 @@ async def test_climate_get_state(hass, init_integration):
assert state.attributes[ATTR_TEMPERATURE] == 14
assert state.attributes[ATTR_CURRENT_TEMPERATURE] == 14
assert state.state == HVAC_MODE_HEAT
assert state.state == HVACMode.HEAT
entry = entity_registry.async_get(entity_id)
assert entry
@ -106,14 +102,14 @@ async def test_climate_set_off(hass, init_integration):
assert await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_OFF},
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.OFF},
blocking=True,
)
mock_put_state.assert_called_once_with(ANY, ANY, ANY, '{"heatingCoolingState": 0}')
await hass.async_block_till_done()
state = hass.states.get(entity_id)
assert state.state == HVAC_MODE_HEAT
assert state.state == HVACMode.HEAT
async def test_climate_set_unsupported_hvac_mode(hass, init_integration):
@ -134,7 +130,7 @@ async def test_climate_set_unsupported_hvac_mode(hass, init_integration):
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_AUTO},
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.AUTO},
blocking=True,
)
@ -161,7 +157,7 @@ async def test_climate_set_temperature(hass, init_integration):
SERVICE_SET_TEMPERATURE,
{
ATTR_ENTITY_ID: [entity_id],
ATTR_HVAC_MODE: HVAC_MODE_OFF,
ATTR_HVAC_MODE: HVACMode.OFF,
ATTR_TEMPERATURE: 25,
},
blocking=True,
@ -203,7 +199,7 @@ async def test_climate_set_temperature_unsupported_hvac_mode(hass, init_integrat
SERVICE_SET_TEMPERATURE,
{
ATTR_ENTITY_ID: [entity_id],
ATTR_HVAC_MODE: HVAC_MODE_AUTO,
ATTR_HVAC_MODE: HVACMode.AUTO,
ATTR_TEMPERATURE: 25,
},
blocking=True,