Add test cases and fix for device_defaults fire_event option. (#9567)
* Add test cases and fix for device_defaults fire_event option. * Also for light. * Change docstring mood.
This commit is contained in:
parent
ff7db218b1
commit
515d1bdbd3
3 changed files with 85 additions and 2 deletions
|
@ -48,7 +48,7 @@ PLATFORM_SCHEMA = vol.Schema({
|
||||||
vol.All(cv.ensure_list, [cv.string]),
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
||||||
vol.All(cv.ensure_list, [cv.string]),
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
vol.Optional(CONF_FIRE_EVENT): cv.boolean,
|
||||||
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
||||||
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
||||||
# deprecated config options
|
# deprecated config options
|
||||||
|
|
|
@ -35,7 +35,7 @@ PLATFORM_SCHEMA = vol.Schema({
|
||||||
vol.All(cv.ensure_list, [cv.string]),
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
||||||
vol.All(cv.ensure_list, [cv.string]),
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
vol.Optional(CONF_FIRE_EVENT): cv.boolean,
|
||||||
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
||||||
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
||||||
# deprecated config options
|
# deprecated config options
|
||||||
|
|
|
@ -7,8 +7,10 @@ control of Rflink switch devices.
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
from homeassistant.components.rflink import EVENT_BUTTON_PRESSED
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON)
|
ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON)
|
||||||
|
from homeassistant.core import callback
|
||||||
|
|
||||||
from ..test_rflink import mock_rflink
|
from ..test_rflink import mock_rflink
|
||||||
|
|
||||||
|
@ -227,3 +229,84 @@ def test_nogroup_device_id(hass, monkeypatch):
|
||||||
yield from hass.async_block_till_done()
|
yield from hass.async_block_till_done()
|
||||||
# should affect state
|
# should affect state
|
||||||
assert hass.states.get(DOMAIN + '.test').state == 'on'
|
assert hass.states.get(DOMAIN + '.test').state == 'on'
|
||||||
|
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def test_device_defaults(hass, monkeypatch):
|
||||||
|
"""Event should fire if device_defaults config says so."""
|
||||||
|
config = {
|
||||||
|
'rflink': {
|
||||||
|
'port': '/dev/ttyABC0',
|
||||||
|
},
|
||||||
|
DOMAIN: {
|
||||||
|
'platform': 'rflink',
|
||||||
|
'device_defaults': {
|
||||||
|
'fire_event': True,
|
||||||
|
},
|
||||||
|
'devices': {
|
||||||
|
'protocol_0_0': {
|
||||||
|
'name': 'test',
|
||||||
|
'aliases': ['test_alias_0_0'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
# setup mocking rflink module
|
||||||
|
event_callback, _, _, _ = yield from mock_rflink(
|
||||||
|
hass, config, DOMAIN, monkeypatch)
|
||||||
|
|
||||||
|
calls = []
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def listener(event):
|
||||||
|
calls.append(event)
|
||||||
|
hass.bus.async_listen_once(EVENT_BUTTON_PRESSED, listener)
|
||||||
|
|
||||||
|
# test event for new unconfigured sensor
|
||||||
|
event_callback({
|
||||||
|
'id': 'protocol_0_0',
|
||||||
|
'command': 'off',
|
||||||
|
})
|
||||||
|
yield from hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert calls[0].data == {'state': 'off', 'entity_id': DOMAIN + '.test'}
|
||||||
|
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def test_not_firing_default(hass, monkeypatch):
|
||||||
|
"""By default no bus events should be fired."""
|
||||||
|
config = {
|
||||||
|
'rflink': {
|
||||||
|
'port': '/dev/ttyABC0',
|
||||||
|
},
|
||||||
|
DOMAIN: {
|
||||||
|
'platform': 'rflink',
|
||||||
|
'devices': {
|
||||||
|
'protocol_0_0': {
|
||||||
|
'name': 'test',
|
||||||
|
'aliases': ['test_alias_0_0'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
# setup mocking rflink module
|
||||||
|
event_callback, _, _, _ = yield from mock_rflink(
|
||||||
|
hass, config, DOMAIN, monkeypatch)
|
||||||
|
|
||||||
|
calls = []
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def listener(event):
|
||||||
|
calls.append(event)
|
||||||
|
hass.bus.async_listen_once(EVENT_BUTTON_PRESSED, listener)
|
||||||
|
|
||||||
|
# test event for new unconfigured sensor
|
||||||
|
event_callback({
|
||||||
|
'id': 'protocol_0_0',
|
||||||
|
'command': 'off',
|
||||||
|
})
|
||||||
|
yield from hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert not calls, 'an event has been fired'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue