Black
This commit is contained in:
parent
da05dfe708
commit
4de97abc3a
2676 changed files with 163166 additions and 140084 deletions
|
@ -6,31 +6,41 @@ from asynctest import patch, MagicMock
|
|||
|
||||
from homeassistant.components import alarm_control_panel
|
||||
from homeassistant.components.ness_alarm import (
|
||||
DOMAIN, CONF_DEVICE_PORT, CONF_ZONE_NAME, CONF_ZONES,
|
||||
CONF_ZONE_ID, SERVICE_AUX, SERVICE_PANIC,
|
||||
ATTR_CODE, ATTR_OUTPUT_ID)
|
||||
DOMAIN,
|
||||
CONF_DEVICE_PORT,
|
||||
CONF_ZONE_NAME,
|
||||
CONF_ZONES,
|
||||
CONF_ZONE_ID,
|
||||
SERVICE_AUX,
|
||||
SERVICE_PANIC,
|
||||
ATTR_CODE,
|
||||
ATTR_OUTPUT_ID,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
STATE_ALARM_ARMING, SERVICE_ALARM_DISARM, ATTR_ENTITY_ID,
|
||||
SERVICE_ALARM_ARM_AWAY, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_TRIGGER,
|
||||
STATE_ALARM_DISARMED, STATE_ALARM_ARMED_AWAY, STATE_ALARM_PENDING,
|
||||
STATE_ALARM_TRIGGERED, STATE_UNKNOWN, CONF_HOST)
|
||||
STATE_ALARM_ARMING,
|
||||
SERVICE_ALARM_DISARM,
|
||||
ATTR_ENTITY_ID,
|
||||
SERVICE_ALARM_ARM_AWAY,
|
||||
SERVICE_ALARM_ARM_HOME,
|
||||
SERVICE_ALARM_TRIGGER,
|
||||
STATE_ALARM_DISARMED,
|
||||
STATE_ALARM_ARMED_AWAY,
|
||||
STATE_ALARM_PENDING,
|
||||
STATE_ALARM_TRIGGERED,
|
||||
STATE_UNKNOWN,
|
||||
CONF_HOST,
|
||||
)
|
||||
from homeassistant.setup import async_setup_component
|
||||
from tests.common import MockDependency
|
||||
|
||||
VALID_CONFIG = {
|
||||
DOMAIN: {
|
||||
CONF_HOST: 'alarm.local',
|
||||
CONF_HOST: "alarm.local",
|
||||
CONF_DEVICE_PORT: 1234,
|
||||
CONF_ZONES: [
|
||||
{
|
||||
CONF_ZONE_NAME: 'Zone 1',
|
||||
CONF_ZONE_ID: 1,
|
||||
},
|
||||
{
|
||||
CONF_ZONE_NAME: 'Zone 2',
|
||||
CONF_ZONE_ID: 2,
|
||||
}
|
||||
]
|
||||
{CONF_ZONE_NAME: "Zone 1", CONF_ZONE_ID: 1},
|
||||
{CONF_ZONE_NAME: "Zone 2", CONF_ZONE_ID: 2},
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,13 +48,13 @@ VALID_CONFIG = {
|
|||
async def test_setup_platform(hass, mock_nessclient):
|
||||
"""Test platform setup."""
|
||||
await async_setup_component(hass, DOMAIN, VALID_CONFIG)
|
||||
assert hass.services.has_service(DOMAIN, 'panic')
|
||||
assert hass.services.has_service(DOMAIN, 'aux')
|
||||
assert hass.services.has_service(DOMAIN, "panic")
|
||||
assert hass.services.has_service(DOMAIN, "aux")
|
||||
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get('alarm_control_panel.alarm_panel') is not None
|
||||
assert hass.states.get('binary_sensor.zone_1') is not None
|
||||
assert hass.states.get('binary_sensor.zone_2') is not None
|
||||
assert hass.states.get("alarm_control_panel.alarm_panel") is not None
|
||||
assert hass.states.get("binary_sensor.zone_1") is not None
|
||||
assert hass.states.get("binary_sensor.zone_2") is not None
|
||||
|
||||
assert mock_nessclient.keepalive.call_count == 1
|
||||
assert mock_nessclient.update.call_count == 1
|
||||
|
@ -54,19 +64,17 @@ async def test_panic_service(hass, mock_nessclient):
|
|||
"""Test calling panic service."""
|
||||
await async_setup_component(hass, DOMAIN, VALID_CONFIG)
|
||||
await hass.services.async_call(
|
||||
DOMAIN, SERVICE_PANIC, blocking=True, service_data={
|
||||
ATTR_CODE: '1234'
|
||||
})
|
||||
mock_nessclient.panic.assert_awaited_once_with('1234')
|
||||
DOMAIN, SERVICE_PANIC, blocking=True, service_data={ATTR_CODE: "1234"}
|
||||
)
|
||||
mock_nessclient.panic.assert_awaited_once_with("1234")
|
||||
|
||||
|
||||
async def test_aux_service(hass, mock_nessclient):
|
||||
"""Test calling aux service."""
|
||||
await async_setup_component(hass, DOMAIN, VALID_CONFIG)
|
||||
await hass.services.async_call(
|
||||
DOMAIN, SERVICE_AUX, blocking=True, service_data={
|
||||
ATTR_OUTPUT_ID: 1
|
||||
})
|
||||
DOMAIN, SERVICE_AUX, blocking=True, service_data={ATTR_OUTPUT_ID: 1}
|
||||
)
|
||||
mock_nessclient.aux.assert_awaited_once_with(1, True)
|
||||
|
||||
|
||||
|
@ -79,8 +87,7 @@ async def test_dispatch_state_change(hass, mock_nessclient):
|
|||
on_state_change(MockArmingState.ARMING)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.is_state('alarm_control_panel.alarm_panel',
|
||||
STATE_ALARM_ARMING)
|
||||
assert hass.states.is_state("alarm_control_panel.alarm_panel", STATE_ALARM_ARMING)
|
||||
|
||||
|
||||
async def test_alarm_disarm(hass, mock_nessclient):
|
||||
|
@ -89,12 +96,15 @@ async def test_alarm_disarm(hass, mock_nessclient):
|
|||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
alarm_control_panel.DOMAIN, SERVICE_ALARM_DISARM, blocking=True,
|
||||
alarm_control_panel.DOMAIN,
|
||||
SERVICE_ALARM_DISARM,
|
||||
blocking=True,
|
||||
service_data={
|
||||
ATTR_ENTITY_ID: 'alarm_control_panel.alarm_panel',
|
||||
ATTR_CODE: '1234'
|
||||
})
|
||||
mock_nessclient.disarm.assert_called_once_with('1234')
|
||||
ATTR_ENTITY_ID: "alarm_control_panel.alarm_panel",
|
||||
ATTR_CODE: "1234",
|
||||
},
|
||||
)
|
||||
mock_nessclient.disarm.assert_called_once_with("1234")
|
||||
|
||||
|
||||
async def test_alarm_arm_away(hass, mock_nessclient):
|
||||
|
@ -103,12 +113,15 @@ async def test_alarm_arm_away(hass, mock_nessclient):
|
|||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
alarm_control_panel.DOMAIN, SERVICE_ALARM_ARM_AWAY, blocking=True,
|
||||
alarm_control_panel.DOMAIN,
|
||||
SERVICE_ALARM_ARM_AWAY,
|
||||
blocking=True,
|
||||
service_data={
|
||||
ATTR_ENTITY_ID: 'alarm_control_panel.alarm_panel',
|
||||
ATTR_CODE: '1234'
|
||||
})
|
||||
mock_nessclient.arm_away.assert_called_once_with('1234')
|
||||
ATTR_ENTITY_ID: "alarm_control_panel.alarm_panel",
|
||||
ATTR_CODE: "1234",
|
||||
},
|
||||
)
|
||||
mock_nessclient.arm_away.assert_called_once_with("1234")
|
||||
|
||||
|
||||
async def test_alarm_arm_home(hass, mock_nessclient):
|
||||
|
@ -117,12 +130,15 @@ async def test_alarm_arm_home(hass, mock_nessclient):
|
|||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
alarm_control_panel.DOMAIN, SERVICE_ALARM_ARM_HOME, blocking=True,
|
||||
alarm_control_panel.DOMAIN,
|
||||
SERVICE_ALARM_ARM_HOME,
|
||||
blocking=True,
|
||||
service_data={
|
||||
ATTR_ENTITY_ID: 'alarm_control_panel.alarm_panel',
|
||||
ATTR_CODE: '1234'
|
||||
})
|
||||
mock_nessclient.arm_home.assert_called_once_with('1234')
|
||||
ATTR_ENTITY_ID: "alarm_control_panel.alarm_panel",
|
||||
ATTR_CODE: "1234",
|
||||
},
|
||||
)
|
||||
mock_nessclient.arm_home.assert_called_once_with("1234")
|
||||
|
||||
|
||||
async def test_alarm_trigger(hass, mock_nessclient):
|
||||
|
@ -131,12 +147,15 @@ async def test_alarm_trigger(hass, mock_nessclient):
|
|||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
alarm_control_panel.DOMAIN, SERVICE_ALARM_TRIGGER, blocking=True,
|
||||
alarm_control_panel.DOMAIN,
|
||||
SERVICE_ALARM_TRIGGER,
|
||||
blocking=True,
|
||||
service_data={
|
||||
ATTR_ENTITY_ID: 'alarm_control_panel.alarm_panel',
|
||||
ATTR_CODE: '1234'
|
||||
})
|
||||
mock_nessclient.panic.assert_called_once_with('1234')
|
||||
ATTR_ENTITY_ID: "alarm_control_panel.alarm_panel",
|
||||
ATTR_CODE: "1234",
|
||||
},
|
||||
)
|
||||
mock_nessclient.panic.assert_called_once_with("1234")
|
||||
|
||||
|
||||
async def test_dispatch_zone_change(hass, mock_nessclient):
|
||||
|
@ -148,8 +167,8 @@ async def test_dispatch_zone_change(hass, mock_nessclient):
|
|||
on_zone_change(1, True)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.is_state('binary_sensor.zone_1', 'on')
|
||||
assert hass.states.is_state('binary_sensor.zone_2', 'off')
|
||||
assert hass.states.is_state("binary_sensor.zone_1", "on")
|
||||
assert hass.states.is_state("binary_sensor.zone_2", "off")
|
||||
|
||||
|
||||
async def test_arming_state_change(hass, mock_nessclient):
|
||||
|
@ -166,27 +185,25 @@ async def test_arming_state_change(hass, mock_nessclient):
|
|||
|
||||
await async_setup_component(hass, DOMAIN, VALID_CONFIG)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.is_state('alarm_control_panel.alarm_panel',
|
||||
STATE_UNKNOWN)
|
||||
assert hass.states.is_state("alarm_control_panel.alarm_panel", STATE_UNKNOWN)
|
||||
on_state_change = mock_nessclient.on_state_change.call_args[0][0]
|
||||
|
||||
for arming_state, expected_state in states:
|
||||
on_state_change(arming_state)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.is_state('alarm_control_panel.alarm_panel',
|
||||
expected_state)
|
||||
assert hass.states.is_state("alarm_control_panel.alarm_panel", expected_state)
|
||||
|
||||
|
||||
class MockArmingState(Enum):
|
||||
"""Mock nessclient.ArmingState enum."""
|
||||
|
||||
UNKNOWN = 'UNKNOWN'
|
||||
DISARMED = 'DISARMED'
|
||||
ARMING = 'ARMING'
|
||||
EXIT_DELAY = 'EXIT_DELAY'
|
||||
ARMED = 'ARMED'
|
||||
ENTRY_DELAY = 'ENTRY_DELAY'
|
||||
TRIGGERED = 'TRIGGERED'
|
||||
UNKNOWN = "UNKNOWN"
|
||||
DISARMED = "DISARMED"
|
||||
ARMING = "ARMING"
|
||||
EXIT_DELAY = "EXIT_DELAY"
|
||||
ARMED = "ARMED"
|
||||
ENTRY_DELAY = "ENTRY_DELAY"
|
||||
TRIGGERED = "TRIGGERED"
|
||||
|
||||
|
||||
class MockClient:
|
||||
|
@ -244,7 +261,7 @@ def mock_nessclient():
|
|||
_mock_factory = MagicMock()
|
||||
_mock_factory.return_value = _mock_instance
|
||||
|
||||
with MockDependency('nessclient'), \
|
||||
patch('nessclient.Client', new=_mock_factory, create=True), \
|
||||
patch('nessclient.ArmingState', new=MockArmingState):
|
||||
with MockDependency("nessclient"), patch(
|
||||
"nessclient.Client", new=_mock_factory, create=True
|
||||
), patch("nessclient.ArmingState", new=MockArmingState):
|
||||
yield _mock_instance
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue