hass-core/tests/components/light/test_mochad.py
Matthew Treinish 57dfe378a1 Add mochad light component (#8476)
* Add mochad light component

This commit adds a new component to control x10 dimmers/lights with
mochad.

* Create comm_type and address constants

The comm_type and address conf constants are shared between all mochad
devices because they are required information used for configuring a
device. This commit moves the definition into const.py so they're
consistent between all component types.
2017-08-03 10:51:01 +02:00

88 lines
2.5 KiB
Python

"""The tests for the mochad light platform."""
import unittest
import unittest.mock as mock
import pytest
from homeassistant.components import light
from homeassistant.components.light import mochad
from homeassistant.setup import setup_component
from tests.common import get_test_home_assistant
@pytest.fixture(autouse=True)
def pymochad_mock():
"""Mock pymochad."""
with mock.patch.dict('sys.modules', {
'pymochad': mock.MagicMock(),
}):
yield
class TestMochadSwitchSetup(unittest.TestCase):
"""Test the mochad light."""
PLATFORM = mochad
COMPONENT = light
THING = 'light'
def setUp(self):
"""Setup things to be run when tests are started."""
self.hass = get_test_home_assistant()
def tearDown(self):
"""Stop everyhing that was started."""
self.hass.stop()
@mock.patch('homeassistant.components.light.mochad.MochadLight')
def test_setup_adds_proper_devices(self, mock_light):
"""Test if setup adds devices."""
good_config = {
'mochad': {},
'light': {
'platform': 'mochad',
'devices': [
{
'name': 'Light1',
'address': 'a1',
},
],
}
}
self.assertTrue(setup_component(self.hass, light.DOMAIN, good_config))
class TestMochadLight(unittest.TestCase):
"""Test for mochad light platform."""
def setUp(self):
"""Setup things to be run when tests are started."""
self.hass = get_test_home_assistant()
controller_mock = mock.MagicMock()
dev_dict = {'address': 'a1', 'name': 'fake_light'}
self.light = mochad.MochadLight(self.hass, controller_mock,
dev_dict)
def teardown_method(self, method):
"""Stop everything that was started."""
self.hass.stop()
def test_name(self):
"""Test the name."""
self.assertEqual('fake_light', self.light.name)
def test_turn_on_with_no_brightness(self):
"""Test turn_on."""
self.light.turn_on()
self.light.device.send_cmd.assert_called_once_with('xdim 255')
def test_turn_on_with_brightness(self):
"""Test turn_on."""
self.light.turn_on(brightness=45)
self.light.device.send_cmd.assert_called_once_with('xdim 45')
def test_turn_off(self):
"""Test turn_off."""
self.light.turn_off()
self.light.device.send_cmd.assert_called_once_with('off')