mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 10:17:51 +00:00
Test Honeywell Round thermostat
This includes two changes to the round code: - Return True on setup success - Break out the default away temp into a constant
This commit is contained in:
parent
5921e65d83
commit
0fbd947426
@ -19,13 +19,14 @@ REQUIREMENTS = ['evohomeclient==0.2.4',
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
CONF_AWAY_TEMP = "away_temperature"
|
CONF_AWAY_TEMP = "away_temperature"
|
||||||
|
DEFAULT_AWAY_TEMP = 16
|
||||||
|
|
||||||
|
|
||||||
def _setup_round(username, password, config, add_devices):
|
def _setup_round(username, password, config, add_devices):
|
||||||
from evohomeclient import EvohomeClient
|
from evohomeclient import EvohomeClient
|
||||||
|
|
||||||
try:
|
try:
|
||||||
away_temp = float(config.get(CONF_AWAY_TEMP, 16))
|
away_temp = float(config.get(CONF_AWAY_TEMP, DEFAULT_AWAY_TEMP))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
_LOGGER.error("value entered for item %s should convert to a number",
|
_LOGGER.error("value entered for item %s should convert to a number",
|
||||||
CONF_AWAY_TEMP)
|
CONF_AWAY_TEMP)
|
||||||
@ -45,6 +46,7 @@ def _setup_round(username, password, config, add_devices):
|
|||||||
"Connection error logging into the honeywell evohome web service"
|
"Connection error logging into the honeywell evohome web service"
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
# config will be used later
|
# config will be used later
|
||||||
|
@ -4,6 +4,7 @@ tests.components.thermostat.honeywell
|
|||||||
|
|
||||||
Tests the Honeywell thermostat module.
|
Tests the Honeywell thermostat module.
|
||||||
"""
|
"""
|
||||||
|
import socket
|
||||||
import unittest
|
import unittest
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
@ -131,6 +132,125 @@ class TestHoneywell(unittest.TestCase):
|
|||||||
self.assertEqual([mock.sentinel.loc2dev1], devices)
|
self.assertEqual([mock.sentinel.loc2dev1], devices)
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('evohomeclient.EvohomeClient')
|
||||||
|
@mock.patch('homeassistant.components.thermostat.honeywell.'
|
||||||
|
'RoundThermostat')
|
||||||
|
def test_eu_setup_full_config(self, mock_round, mock_evo):
|
||||||
|
config = {
|
||||||
|
CONF_USERNAME: 'user',
|
||||||
|
CONF_PASSWORD: 'pass',
|
||||||
|
honeywell.CONF_AWAY_TEMP: 20,
|
||||||
|
'region': 'eu',
|
||||||
|
}
|
||||||
|
mock_evo.return_value.temperatures.return_value = [
|
||||||
|
{'id': 'foo'}, {'id': 'bar'}]
|
||||||
|
hass = mock.MagicMock()
|
||||||
|
add_devices = mock.MagicMock()
|
||||||
|
self.assertTrue(honeywell.setup_platform(hass, config, add_devices))
|
||||||
|
mock_evo.assert_called_once_with('user', 'pass')
|
||||||
|
mock_evo.return_value.temperatures.assert_called_once_with(
|
||||||
|
force_refresh=True)
|
||||||
|
mock_round.assert_has_calls([
|
||||||
|
mock.call(mock_evo.return_value, 'foo', True, 20),
|
||||||
|
mock.call(mock_evo.return_value, 'bar', False, 20),
|
||||||
|
])
|
||||||
|
self.assertEqual(2, add_devices.call_count)
|
||||||
|
|
||||||
|
@mock.patch('evohomeclient.EvohomeClient')
|
||||||
|
@mock.patch('homeassistant.components.thermostat.honeywell.'
|
||||||
|
'RoundThermostat')
|
||||||
|
def test_eu_setup_partial_config(self, mock_round, mock_evo):
|
||||||
|
config = {
|
||||||
|
CONF_USERNAME: 'user',
|
||||||
|
CONF_PASSWORD: 'pass',
|
||||||
|
'region': 'eu',
|
||||||
|
}
|
||||||
|
mock_evo.return_value.temperatures.return_value = [
|
||||||
|
{'id': 'foo'}, {'id': 'bar'}]
|
||||||
|
hass = mock.MagicMock()
|
||||||
|
add_devices = mock.MagicMock()
|
||||||
|
self.assertTrue(honeywell.setup_platform(hass, config, add_devices))
|
||||||
|
default = honeywell.DEFAULT_AWAY_TEMP
|
||||||
|
mock_round.assert_has_calls([
|
||||||
|
mock.call(mock_evo.return_value, 'foo', True, default),
|
||||||
|
mock.call(mock_evo.return_value, 'bar', False, default),
|
||||||
|
])
|
||||||
|
|
||||||
|
@mock.patch('evohomeclient.EvohomeClient')
|
||||||
|
@mock.patch('homeassistant.components.thermostat.honeywell.'
|
||||||
|
'RoundThermostat')
|
||||||
|
def test_eu_setup_bad_temp(self, mock_round, mock_evo):
|
||||||
|
config = {
|
||||||
|
CONF_USERNAME: 'user',
|
||||||
|
CONF_PASSWORD: 'pass',
|
||||||
|
honeywell.CONF_AWAY_TEMP: 'ponies',
|
||||||
|
'region': 'eu',
|
||||||
|
}
|
||||||
|
self.assertFalse(honeywell.setup_platform(None, config, None))
|
||||||
|
|
||||||
|
@mock.patch('evohomeclient.EvohomeClient')
|
||||||
|
@mock.patch('homeassistant.components.thermostat.honeywell.'
|
||||||
|
'RoundThermostat')
|
||||||
|
def test_eu_setup_error(self, mock_round, mock_evo):
|
||||||
|
config = {
|
||||||
|
CONF_USERNAME: 'user',
|
||||||
|
CONF_PASSWORD: 'pass',
|
||||||
|
honeywell.CONF_AWAY_TEMP: 20,
|
||||||
|
'region': 'eu',
|
||||||
|
}
|
||||||
|
mock_evo.return_value.temperatures.side_effect = socket.error
|
||||||
|
add_devices = mock.MagicMock()
|
||||||
|
hass = mock.MagicMock()
|
||||||
|
self.assertFalse(honeywell.setup_platform(hass, config, add_devices))
|
||||||
|
|
||||||
|
|
||||||
|
class TestHoneywellRound(unittest.TestCase):
|
||||||
|
def setup_method(self, method):
|
||||||
|
def fake_temperatures(force_refresh=None):
|
||||||
|
temps = [
|
||||||
|
{'id': '1', 'temp': 20, 'setpoint': 21,
|
||||||
|
'thermostat': 'main', 'name': 'House'},
|
||||||
|
{'id': '2', 'temp': 21, 'setpoint': 22,
|
||||||
|
'thermostat': 'DOMESTIC_HOT_WATER'},
|
||||||
|
]
|
||||||
|
return temps
|
||||||
|
|
||||||
|
self.device = mock.MagicMock()
|
||||||
|
self.device.temperatures.side_effect = fake_temperatures
|
||||||
|
self.round1 = honeywell.RoundThermostat(self.device, '1',
|
||||||
|
True, 16)
|
||||||
|
self.round2 = honeywell.RoundThermostat(self.device, '2',
|
||||||
|
False, 17)
|
||||||
|
|
||||||
|
def test_attributes(self):
|
||||||
|
self.assertEqual('House', self.round1.name)
|
||||||
|
self.assertEqual(TEMP_CELCIUS, self.round1.unit_of_measurement)
|
||||||
|
self.assertEqual(20, self.round1.current_temperature)
|
||||||
|
self.assertEqual(21, self.round1.target_temperature)
|
||||||
|
self.assertFalse(self.round1.is_away_mode_on)
|
||||||
|
|
||||||
|
self.assertEqual('Hot Water', self.round2.name)
|
||||||
|
self.assertEqual(TEMP_CELCIUS, self.round2.unit_of_measurement)
|
||||||
|
self.assertEqual(21, self.round2.current_temperature)
|
||||||
|
self.assertEqual(None, self.round2.target_temperature)
|
||||||
|
self.assertFalse(self.round2.is_away_mode_on)
|
||||||
|
|
||||||
|
def test_away_mode(self):
|
||||||
|
self.assertFalse(self.round1.is_away_mode_on)
|
||||||
|
self.round1.turn_away_mode_on()
|
||||||
|
self.assertTrue(self.round1.is_away_mode_on)
|
||||||
|
self.device.set_temperature.assert_called_once_with('House', 16)
|
||||||
|
|
||||||
|
self.device.set_temperature.reset_mock()
|
||||||
|
self.round1.turn_away_mode_off()
|
||||||
|
self.assertFalse(self.round1.is_away_mode_on)
|
||||||
|
self.device.cancel_temp_override.assert_called_once_with('House')
|
||||||
|
|
||||||
|
def test_set_temperature(self):
|
||||||
|
self.round1.set_temperature(25)
|
||||||
|
self.device.set_temperature.assert_called_once_with('House', 25)
|
||||||
|
|
||||||
|
|
||||||
class TestHoneywellUS(unittest.TestCase):
|
class TestHoneywellUS(unittest.TestCase):
|
||||||
def setup_method(self, method):
|
def setup_method(self, method):
|
||||||
self.client = mock.MagicMock()
|
self.client = mock.MagicMock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user