"""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% 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 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 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