mirror of https://github.com/home-assistant/core
96 lines
3.3 KiB
Python
96 lines
3.3 KiB
Python
"""Tests for the comfoconnect sensor platform."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from tests.common import assert_setup_component
|
|
|
|
COMPONENT = "comfoconnect"
|
|
VALID_CONFIG = {
|
|
COMPONENT: {"host": "1.2.3.4"},
|
|
SENSOR_DOMAIN: {
|
|
"platform": COMPONENT,
|
|
"resources": [
|
|
"current_humidity",
|
|
"current_temperature",
|
|
"supply_fan_duty",
|
|
"power_usage",
|
|
"preheater_power_total",
|
|
],
|
|
},
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_bridge_discover() -> Generator[MagicMock]:
|
|
"""Mock the bridge discover method."""
|
|
with patch("pycomfoconnect.bridge.Bridge.discover") as mock_bridge_discover:
|
|
mock_bridge_discover.return_value[0].uuid.hex.return_value = "00"
|
|
yield mock_bridge_discover
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_comfoconnect_command() -> Generator[MagicMock]:
|
|
"""Mock the ComfoConnect connect method."""
|
|
with patch(
|
|
"pycomfoconnect.comfoconnect.ComfoConnect._command"
|
|
) as mock_comfoconnect_command:
|
|
yield mock_comfoconnect_command
|
|
|
|
|
|
@pytest.fixture
|
|
async def setup_sensor(
|
|
hass: HomeAssistant,
|
|
mock_bridge_discover: MagicMock,
|
|
mock_comfoconnect_command: MagicMock,
|
|
) -> None:
|
|
"""Set up demo sensor component."""
|
|
with assert_setup_component(1, SENSOR_DOMAIN):
|
|
await async_setup_component(hass, SENSOR_DOMAIN, VALID_CONFIG)
|
|
await hass.async_block_till_done()
|
|
|
|
|
|
@pytest.mark.usefixtures("setup_sensor")
|
|
async def test_sensors(hass: HomeAssistant) -> None:
|
|
"""Test the sensors."""
|
|
state = hass.states.get("sensor.comfoairq_inside_humidity")
|
|
assert state is not None
|
|
assert state.name == "ComfoAirQ Inside humidity"
|
|
assert state.attributes.get("unit_of_measurement") == "%"
|
|
assert state.attributes.get("device_class") == "humidity"
|
|
assert state.attributes.get("icon") is None
|
|
|
|
state = hass.states.get("sensor.comfoairq_inside_temperature")
|
|
assert state is not None
|
|
assert state.name == "ComfoAirQ Inside temperature"
|
|
assert state.attributes.get("unit_of_measurement") == "°C"
|
|
assert state.attributes.get("device_class") == "temperature"
|
|
assert state.attributes.get("icon") is None
|
|
|
|
state = hass.states.get("sensor.comfoairq_supply_fan_duty")
|
|
assert state is not None
|
|
assert state.name == "ComfoAirQ Supply fan duty"
|
|
assert state.attributes.get("unit_of_measurement") == "%"
|
|
assert state.attributes.get("device_class") is None
|
|
assert state.attributes.get("icon") == "mdi:fan-plus"
|
|
|
|
state = hass.states.get("sensor.comfoairq_power_usage")
|
|
assert state is not None
|
|
assert state.name == "ComfoAirQ Power usage"
|
|
assert state.attributes.get("unit_of_measurement") == "W"
|
|
assert state.attributes.get("device_class") == "power"
|
|
assert state.attributes.get("icon") is None
|
|
|
|
state = hass.states.get("sensor.comfoairq_preheater_energy_total")
|
|
assert state is not None
|
|
assert state.name == "ComfoAirQ Preheater energy total"
|
|
assert state.attributes.get("unit_of_measurement") == "kWh"
|
|
assert state.attributes.get("device_class") == "energy"
|
|
assert state.attributes.get("icon") is None
|