* Update attr to property and default state method * State prop is defined in parent class * Demo platform fan * PyDoc * Copy-pasta artifact * PyDoc * Linting * Raise error if turn_off and turn_on not implemented * Update demo platform * Initial unit test commit * Readability * Unneeded typing * Should inherit from fan entity * Turn off polling * Initial oscillating flag * Pass HASS into demo * Typing * Invoke set_speed instead of setting directly * Service update * Update demo tests * Forgot to block after service call. * linting * Test to make sure not implemented is thrown * Is On Method test * Update const to match string * Update services yaml * Toggle method * Toggle service * Typing * TYPE O * Attribute check * Type-o * Type-o * Put typing back * ToggleEntity * Linting * Linting * Oops * Stale prints * Demo support
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
"""Tests for the insteon hub fan platform."""
|
|
import unittest
|
|
|
|
from homeassistant.const import (STATE_OFF, STATE_ON)
|
|
from homeassistant.components.fan import (SPEED_LOW, SPEED_MED, SPEED_HIGH,
|
|
ATTR_SPEED)
|
|
from homeassistant.components.fan.insteon_hub import (InsteonFanDevice,
|
|
SUPPORT_SET_SPEED)
|
|
|
|
|
|
class Node(object):
|
|
"""Fake insteon node."""
|
|
|
|
def __init__(self, name, id, dev_cat, sub_cat):
|
|
"""Initialize fake insteon node."""
|
|
self.DeviceName = name
|
|
self.DeviceID = id
|
|
self.DevCat = dev_cat
|
|
self.SubCat = sub_cat
|
|
self.response = None
|
|
|
|
def send_command(self, command, payload, level, wait):
|
|
"""Send fake command."""
|
|
return self.response
|
|
|
|
|
|
class TestInsteonHubFanDevice(unittest.TestCase):
|
|
"""Test around insteon hub fan device methods."""
|
|
|
|
_NODE = Node('device', '12345', '1', '46')
|
|
|
|
def setUp(self):
|
|
"""Initialize test data."""
|
|
self._DEVICE = InsteonFanDevice(self._NODE)
|
|
|
|
def tearDown(self):
|
|
"""Tear down test data."""
|
|
self._DEVICE = None
|
|
|
|
def test_properties(self):
|
|
"""Test basic properties."""
|
|
self.assertEqual(self._NODE.DeviceName, self._DEVICE.name)
|
|
self.assertEqual(self._NODE.DeviceID, self._DEVICE.unique_id)
|
|
self.assertEqual(SUPPORT_SET_SPEED, self._DEVICE.supported_features)
|
|
|
|
for speed in [STATE_OFF, SPEED_LOW, SPEED_MED, SPEED_HIGH]:
|
|
self.assertIn(speed, self._DEVICE.speed_list)
|
|
|
|
def test_turn_on(self):
|
|
"""Test the turning on device."""
|
|
self._NODE.response = {
|
|
'status': 'succeeded'
|
|
}
|
|
self.assertEqual(STATE_OFF, self._DEVICE.state)
|
|
self._DEVICE.turn_on()
|
|
|
|
self.assertEqual(STATE_ON, self._DEVICE.state)
|
|
|
|
self._DEVICE.turn_on(SPEED_MED)
|
|
|
|
self.assertEqual(STATE_ON, self._DEVICE.state)
|
|
self.assertEqual(SPEED_MED, self._DEVICE.state_attributes[ATTR_SPEED])
|
|
|
|
def test_turn_off(self):
|
|
"""Test turning off device."""
|
|
self._NODE.response = {
|
|
'status': 'succeeded'
|
|
}
|
|
self.assertEqual(STATE_OFF, self._DEVICE.state)
|
|
self._DEVICE.turn_on()
|
|
self.assertEqual(STATE_ON, self._DEVICE.state)
|
|
self._DEVICE.turn_off()
|
|
self.assertEqual(STATE_OFF, self._DEVICE.state)
|