core/tests/components/maxcube/conftest.py

114 lines
3.3 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.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, hass_config, 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