def test_discovery_custom_prefix(self): device_settings = { "name": "fake", "label": "Fake Device" } settings = { "_publish": self.mock, "discovery_prefix": "myhass", "discovery_devices": [ drivers.FakeFan(**device_settings), drivers.FakeLight(**device_settings) ] } config.PERSISTENCE = [persistence.MQTTHomeAssistant(**settings)] msgs = self.mock.multiple.call_args[0][0] self.assertEqual(2, len(msgs)) # two devices were announced self.assertEqual('myhass/fan/fans_fake/config', msgs[0]['topic']) self.assertEqual('myhass/light/lights_fake/config', msgs[1]['topic']) fan = json.loads(msgs[0]['payload']) desired_fan = { 'name': 'Fake Device', 'state_topic': 'myhass/fan/fans_fake/state', 'command_topic': 'myhass/fan/fans_fake/set', 'speed_state_topic': 'myhass/fan/fans_fake_speed/state', 'speed_command_topic': 'myhass/fan/fans_fake_speed/set', 'payload_off': 'OFF', 'payload_low_speed': '1', 'payload_medium_speed': '2', 'payload_high_speed': '3', 'speeds': ['low', 'medium', 'high'] } self.assertEqual(desired_fan, fan)
def test_publish_subscriptions(self): device = drivers.FakeLight(name="test", label="Test") with pubsub.subscribe() as event_source: self.assertEqual(0, event_source.qsize()) device.set_state("ON") self.assertEqual(1, event_source.qsize()) event = event_source.get(False) self.assertEqual(device, event['device']) self.assertEqual("ON", event['state'])
def test_state(self): light = drivers.FakeLight(name="test", label="Test") light.set_state("ON") self.assertEqual("ON", light.get_state()) light.set_state("OFF") self.assertEqual("OFF", light.get_state()) self.assertEqual(set(["ON", "OFF"]), set(light.get_available_states())) fan = drivers.FakeFan(name="test", label="Test") self.assertEqual(set(["OFF", "ON"]), set(fan.get_available_states())) self.assertEqual(set(["OFF", "ON"]), set(fan.subdevices['power'].get_available_states())) self.assertEqual(set(["1", "2", "3"]), set(fan.subdevices['speed'].get_available_states())) self.assertEqual(set(["0", "1", "2", "3"]), set(fan.subdevices['command'].get_available_states()))
def test_publish_no_subscriptions(self): device = drivers.FakeLight(name="test", label="Test") device.set_state("ON")
def test_class(self): fan = drivers.FakeFan(name="test", label="Test") self.assertEqual('fans', fan.get_class()) light = drivers.FakeLight(name="test", label="Test") self.assertEqual('lights', light.get_class())
def test_create(self): dev = drivers.FakeFan(name="test", label="Test") dev = drivers.FakeLight(name="test", label="Test")