mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 01:38:02 +00:00
Z-Wave Lock Config Entry Support (#18209)
* Config Entry setup for zwave lock * fix merge conflict * lint * Update other tests * Fix tests * Remove debug line and unused import
This commit is contained in:
parent
3838be4cb8
commit
e87ecbd500
@ -8,8 +8,10 @@ import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.components.lock import DOMAIN, LockDevice
|
||||
from homeassistant.components import zwave
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -133,9 +135,18 @@ CLEAR_USERCODE_SCHEMA = vol.Schema({
|
||||
|
||||
async def async_setup_platform(hass, config, async_add_entities,
|
||||
discovery_info=None):
|
||||
"""Set up the Z-Wave Lock platform."""
|
||||
await zwave.async_setup_platform(
|
||||
hass, config, async_add_entities, discovery_info)
|
||||
"""Old method of setting up Z-Wave locks."""
|
||||
pass
|
||||
|
||||
|
||||
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
"""Set up Z-Wave Lock from Config Entry."""
|
||||
@callback
|
||||
def async_add_lock(lock):
|
||||
"""Add Z-Wave Lock."""
|
||||
async_add_entities([lock])
|
||||
|
||||
async_dispatcher_connect(hass, 'zwave_new_lock', async_add_lock)
|
||||
|
||||
network = hass.data[zwave.const.DATA_NETWORK]
|
||||
|
||||
|
@ -67,7 +67,7 @@ DEFAULT_CONF_REFRESH_VALUE = False
|
||||
DEFAULT_CONF_REFRESH_DELAY = 5
|
||||
|
||||
SUPPORTED_PLATFORMS = ['binary_sensor', 'climate', 'cover', 'fan',
|
||||
'light', 'sensor', 'switch']
|
||||
'lock', 'light', 'sensor', 'switch']
|
||||
|
||||
RENAME_NODE_SCHEMA = vol.Schema({
|
||||
vol.Required(const.ATTR_NODE_ID): vol.Coerce(int),
|
||||
|
@ -3,6 +3,7 @@ import asyncio
|
||||
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.lock import zwave
|
||||
from homeassistant.components.zwave import const
|
||||
|
||||
@ -184,15 +185,27 @@ def test_lock_alarm_level(mock_openzwave):
|
||||
'Tamper Alarm: Too many keypresses'
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def setup_ozw(hass, mock_openzwave):
|
||||
"""Set up the mock ZWave config entry."""
|
||||
hass.config.components.add('zwave')
|
||||
config_entry = config_entries.ConfigEntry(1, 'zwave', 'Mock Title', {
|
||||
'usb_path': 'mock-path',
|
||||
'network_key': 'mock-key'
|
||||
}, 'test', config_entries.CONN_CLASS_LOCAL_PUSH)
|
||||
yield from hass.config_entries.async_forward_entry_setup(config_entry,
|
||||
'lock')
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def test_lock_set_usercode_service(hass, mock_openzwave):
|
||||
"""Test the zwave lock set_usercode service."""
|
||||
mock_network = hass.data[zwave.zwave.DATA_NETWORK] = MagicMock()
|
||||
|
||||
node = MockNode(node_id=12)
|
||||
value0 = MockValue(data=' ', node=node, index=0)
|
||||
value1 = MockValue(data=' ', node=node, index=1)
|
||||
yield from zwave.async_setup_platform(
|
||||
hass, {}, MagicMock())
|
||||
|
||||
node.get_values.return_value = {
|
||||
value0.value_id: value0,
|
||||
@ -202,6 +215,10 @@ def test_lock_set_usercode_service(hass, mock_openzwave):
|
||||
mock_network.nodes = {
|
||||
node.node_id: node
|
||||
}
|
||||
|
||||
yield from setup_ozw(hass, mock_openzwave)
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
yield from hass.services.async_call(
|
||||
zwave.DOMAIN, zwave.SERVICE_SET_USERCODE, {
|
||||
const.ATTR_NODE_ID: node.node_id,
|
||||
@ -233,14 +250,15 @@ def test_lock_get_usercode_service(hass, mock_openzwave):
|
||||
node = MockNode(node_id=12)
|
||||
value0 = MockValue(data=None, node=node, index=0)
|
||||
value1 = MockValue(data='1234', node=node, index=1)
|
||||
yield from zwave.async_setup_platform(
|
||||
hass, {}, MagicMock())
|
||||
|
||||
node.get_values.return_value = {
|
||||
value0.value_id: value0,
|
||||
value1.value_id: value1,
|
||||
}
|
||||
|
||||
yield from setup_ozw(hass, mock_openzwave)
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
with patch.object(zwave, '_LOGGER') as mock_logger:
|
||||
mock_network.nodes = {node.node_id: node}
|
||||
yield from hass.services.async_call(
|
||||
@ -262,8 +280,6 @@ def test_lock_clear_usercode_service(hass, mock_openzwave):
|
||||
node = MockNode(node_id=12)
|
||||
value0 = MockValue(data=None, node=node, index=0)
|
||||
value1 = MockValue(data='123', node=node, index=1)
|
||||
yield from zwave.async_setup_platform(
|
||||
hass, {}, MagicMock())
|
||||
|
||||
node.get_values.return_value = {
|
||||
value0.value_id: value0,
|
||||
@ -273,6 +289,10 @@ def test_lock_clear_usercode_service(hass, mock_openzwave):
|
||||
mock_network.nodes = {
|
||||
node.node_id: node
|
||||
}
|
||||
|
||||
yield from setup_ozw(hass, mock_openzwave)
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
yield from hass.services.async_call(
|
||||
zwave.DOMAIN, zwave.SERVICE_CLEAR_USERCODE, {
|
||||
const.ATTR_NODE_ID: node.node_id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user