Files
home-assistant-core/tests/components/fan/test_insteon_hub.py
T
Teagan Glenn fdb6de4d23 Fan demo (#2976)
* 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
2016-08-27 14:53:12 -06:00

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)