core/tests/components/maxcube/conftest.py

124 lines
3.4 KiB
Python

"""Tests for EQ3 Max! component."""
from unittest.mock import create_autospec, patch
from maxcube.device import MAX_DEVICE_MODE_AUTOMATIC, MAX_DEVICE_MODE_MANUAL
from maxcube.room import MaxRoom
from maxcube.thermostat import MaxThermostat
from maxcube.wallthermostat import MaxWallThermostat
from maxcube.windowshutter import MaxWindowShutter
import pytest
from homeassistant.components.maxcube import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import ConfigType
from homeassistant.setup import async_setup_component
from homeassistant.util.dt import now
@pytest.fixture
def room():
"""Create a test MAX! room."""
r = MaxRoom()
r.id = 1
r.name = "TestRoom"
return r
@pytest.fixture
def thermostat():
"""Create test MAX! thermostat."""
t = create_autospec(MaxThermostat)
t.name = "TestThermostat"
t.serial = "AABBCCDD01"
t.rf_address = "abc1"
t.room_id = 1
t.is_thermostat.return_value = True
t.is_wallthermostat.return_value = False
t.is_windowshutter.return_value = False
t.mode = MAX_DEVICE_MODE_AUTOMATIC
t.comfort_temperature = 19.0
t.eco_temperature = 14.0
t.target_temperature = 20.5
t.actual_temperature = 19.0
t.max_temperature = None
t.min_temperature = None
t.valve_position = 25 # 25%
t.battery = 1
return t
@pytest.fixture
def wallthermostat():
"""Create test MAX! wall thermostat."""
t = create_autospec(MaxWallThermostat)
t.name = "TestWallThermostat"
t.serial = "AABBCCDD02"
t.rf_address = "abc2"
t.room_id = 1
t.is_thermostat.return_value = False
t.is_wallthermostat.return_value = True
t.is_windowshutter.return_value = False
t.mode = MAX_DEVICE_MODE_MANUAL
t.comfort_temperature = 19.0
t.eco_temperature = 14.0
t.target_temperature = 4.5
t.actual_temperature = 19.0
t.max_temperature = 29.0
t.min_temperature = 4.5
t.battery = 1
return t
@pytest.fixture
def windowshutter():
"""Create test MAX! window shutter."""
shutter = create_autospec(MaxWindowShutter)
shutter.name = "TestShutter"
shutter.serial = "AABBCCDD03"
shutter.rf_address = "abc3"
shutter.room_id = 1
shutter.is_open = True
shutter.is_thermostat.return_value = False
shutter.is_wallthermostat.return_value = False
shutter.is_windowshutter.return_value = True
shutter.battery = 1
return shutter
@pytest.fixture
def hass_config():
"""Return test HASS configuration."""
return {
DOMAIN: {
"gateways": [
{
"host": "1.2.3.4",
}
]
}
}
@pytest.fixture
async def cube(
hass: HomeAssistant,
hass_config: ConfigType,
room,
thermostat,
wallthermostat,
windowshutter,
):
"""Build and setup a cube mock with a single room and some devices."""
with patch("homeassistant.components.maxcube.MaxCube") as mock:
cube = mock.return_value
cube.rooms = [room]
cube.devices = [thermostat, wallthermostat, windowshutter]
cube.room_by_id.return_value = room
cube.devices_by_room.return_value = [thermostat, wallthermostat, windowshutter]
assert await async_setup_component(hass, DOMAIN, hass_config)
await hass.async_block_till_done()
gateway = hass_config[DOMAIN]["gateways"][0]
mock.assert_called_with(gateway["host"], gateway.get("port", 62910), now=now)
return cube