Improved Homekit tests (#12647)
* Spelling and typos * Updated 'test_homekit_pyhap_interaction' * Patch ip_address
This commit is contained in:
parent
da832dbda2
commit
eacfbc048a
4 changed files with 42 additions and 42 deletions
|
@ -1,16 +1,14 @@
|
|||
"""Tests for the homekit component."""
|
||||
"""Tests for the HomeKit component."""
|
||||
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import call, patch
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant import setup
|
||||
from homeassistant.core import Event
|
||||
from homeassistant.components.homekit import (
|
||||
CONF_PIN_CODE, BRIDGE_NAME, Homekit, valid_pin)
|
||||
from homeassistant.components.homekit.covers import Window
|
||||
from homeassistant.components.homekit.sensors import TemperatureSensor
|
||||
CONF_PIN_CODE, BRIDGE_NAME, HOMEKIT_FILE, HomeKit, valid_pin)
|
||||
from homeassistant.const import (
|
||||
CONF_PORT, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP)
|
||||
|
||||
|
@ -27,20 +25,20 @@ CONFIG = {
|
|||
}
|
||||
|
||||
|
||||
class TestHomekit(unittest.TestCase):
|
||||
"""Test the Multicover component."""
|
||||
class TestHomeKit(unittest.TestCase):
|
||||
"""Test setup of HomeKit component and HomeKit class."""
|
||||
|
||||
def setUp(self):
|
||||
"""Setup things to be run when tests are started."""
|
||||
self.hass = get_test_home_assistant()
|
||||
|
||||
def tearDown(self):
|
||||
"""Stop down everthing that was started."""
|
||||
"""Stop down everything that was started."""
|
||||
self.hass.stop()
|
||||
|
||||
@patch(HOMEKIT_PATH + '.Homekit.start_driver')
|
||||
@patch(HOMEKIT_PATH + '.Homekit.setup_bridge')
|
||||
@patch(HOMEKIT_PATH + '.Homekit.__init__')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.start_driver')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.setup_bridge')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.__init__')
|
||||
def test_setup_min(self, mock_homekit, mock_setup_bridge,
|
||||
mock_start_driver):
|
||||
"""Test async_setup with minimal config option."""
|
||||
|
@ -57,9 +55,9 @@ class TestHomekit(unittest.TestCase):
|
|||
self.hass.block_till_done()
|
||||
self.assertEqual(mock_start_driver.call_count, 1)
|
||||
|
||||
@patch(HOMEKIT_PATH + '.Homekit.start_driver')
|
||||
@patch(HOMEKIT_PATH + '.Homekit.setup_bridge')
|
||||
@patch(HOMEKIT_PATH + '.Homekit.__init__')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.start_driver')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.setup_bridge')
|
||||
@patch(HOMEKIT_PATH + '.HomeKit.__init__')
|
||||
def test_setup_parameters(self, mock_homekit, mock_setup_bridge,
|
||||
mock_start_driver):
|
||||
"""Test async_setup with full config option."""
|
||||
|
@ -82,20 +80,17 @@ class TestHomekit(unittest.TestCase):
|
|||
for value in ('123-45-678', '234-56-789'):
|
||||
self.assertTrue(schema(value))
|
||||
|
||||
@patch('pyhap.accessory_driver.AccessoryDriver.persist')
|
||||
@patch('pyhap.accessory_driver.AccessoryDriver.stop')
|
||||
@patch('pyhap.accessory_driver.AccessoryDriver.start')
|
||||
@patch('pyhap.accessory_driver.AccessoryDriver')
|
||||
@patch('pyhap.accessory.Bridge.add_accessory')
|
||||
@patch(HOMEKIT_PATH + '.import_types')
|
||||
@patch(HOMEKIT_PATH + '.get_accessory')
|
||||
def test_homekit_pyhap_interaction(
|
||||
self, mock_get_accessory, mock_import_types,
|
||||
mock_driver_start, mock_driver_stop, mock_file_persist):
|
||||
"""Test the interaction between the homekit class and pyhap."""
|
||||
acc1 = TemperatureSensor(self.hass, 'sensor.temp', 'Temperature')
|
||||
acc2 = Window(self.hass, 'cover.hall_window', 'Cover')
|
||||
mock_get_accessory.side_effect = [acc1, acc2]
|
||||
mock_add_accessory, mock_acc_driver):
|
||||
"""Test interaction between the HomeKit class and pyhap."""
|
||||
mock_get_accessory.side_effect = ['TemperatureSensor', 'Window']
|
||||
|
||||
homekit = Homekit(self.hass, 51826)
|
||||
homekit = HomeKit(self.hass, 51826)
|
||||
homekit.setup_bridge(b'123-45-678')
|
||||
|
||||
self.assertEqual(homekit.bridge.display_name, BRIDGE_NAME)
|
||||
|
@ -106,19 +101,24 @@ class TestHomekit(unittest.TestCase):
|
|||
self.hass.start()
|
||||
self.hass.block_till_done()
|
||||
|
||||
homekit.start_driver(Event(EVENT_HOMEASSISTANT_START))
|
||||
with patch('homeassistant.util.get_local_ip',
|
||||
return_value='127.0.0.1'):
|
||||
homekit.start_driver(Event(EVENT_HOMEASSISTANT_START))
|
||||
|
||||
ip_address = '127.0.0.1'
|
||||
path = self.hass.config.path(HOMEKIT_FILE)
|
||||
|
||||
self.assertEqual(mock_get_accessory.call_count, 2)
|
||||
self.assertEqual(mock_import_types.call_count, 1)
|
||||
self.assertEqual(mock_driver_start.call_count, 1)
|
||||
self.assertEqual(mock_acc_driver.mock_calls,
|
||||
[call(homekit.bridge, 51826, ip_address, path),
|
||||
call().start()])
|
||||
|
||||
accessories = homekit.bridge.accessories
|
||||
self.assertEqual(accessories[2], acc1)
|
||||
self.assertEqual(accessories[3], acc2)
|
||||
|
||||
mock_driver_stop.assert_not_called()
|
||||
self.assertEqual(mock_add_accessory.mock_calls,
|
||||
[call('TemperatureSensor'), call('Window')])
|
||||
|
||||
self.hass.bus.fire(EVENT_HOMEASSISTANT_STOP)
|
||||
self.hass.block_till_done()
|
||||
|
||||
self.assertEqual(mock_driver_stop.call_count, 1)
|
||||
self.assertEqual(mock_acc_driver.mock_calls[2], call().stop())
|
||||
self.assertEqual(len(mock_acc_driver.mock_calls), 3)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue