def test_all_commands(self): """Test simple commands to the vacuum.""" self.default_config[mqtt.CONF_SUPPORTED_FEATURES] = \ mqtt.services_to_strings(mqtt.ALL_SERVICES) self.assertTrue(setup_component(self.hass, vacuum.DOMAIN, { vacuum.DOMAIN: self.default_config, })) vacuum.turn_on(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'turn_on', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.turn_off(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'turn_off', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.stop(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'stop', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.clean_spot(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'clean_spot', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.locate(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'locate', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.start_pause(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'start_pause', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.return_to_base(self.hass, 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual(('vacuum/command', 'return_to_base', 0, False), self.mock_publish.mock_calls[-2][1]) vacuum.set_fan_speed(self.hass, 'high', 'vacuum.mqtttest') self.hass.block_till_done() self.assertEqual( ('vacuum/set_fan_speed', 'high', 0, False), self.mock_publish.mock_calls[-2][1] ) vacuum.send_command(self.hass, '44 FE 93', entity_id='vacuum.mqtttest') self.hass.block_till_done() self.assertEqual( ('vacuum/send_command', '44 FE 93', 0, False), self.mock_publish.mock_calls[-2][1] )
def test_default_supported_features(self): """Test that the correct supported features.""" self.assertTrue(setup_component(self.hass, vacuum.DOMAIN, { vacuum.DOMAIN: self.default_config, })) entity = self.hass.states.get('vacuum.mqtttest') entity_features = \ entity.attributes.get(mqtt.CONF_SUPPORTED_FEATURES, 0) self.assertListEqual(sorted(mqtt.services_to_strings(entity_features)), sorted(['turn_on', 'turn_off', 'stop', 'return_home', 'battery', 'status', 'clean_spot']))
def test_status_invalid_json(self): """Test to make sure nothing breaks if the vacuum sends bad JSON.""" self.default_config[mqtt.CONF_SUPPORTED_FEATURES] = \ mqtt.services_to_strings(mqtt.ALL_SERVICES) self.assertTrue(setup_component(self.hass, vacuum.DOMAIN, { vacuum.DOMAIN: self.default_config, })) fire_mqtt_message(self.hass, 'vacuum/state', '{"asdfasas false}') self.hass.block_till_done() state = self.hass.states.get('vacuum.mqtttest') self.assertEqual(STATE_OFF, state.state) self.assertEqual("Stopped", state.attributes.get(ATTR_STATUS))
def test_status(self): """Test status updates from the vacuum.""" self.default_config[mqtt.CONF_SUPPORTED_FEATURES] = \ mqtt.services_to_strings(mqtt.ALL_SERVICES) self.assertTrue(setup_component(self.hass, vacuum.DOMAIN, { vacuum.DOMAIN: self.default_config, })) message = """{ "battery_level": 54, "cleaning": true, "docked": false, "charging": false, "fan_speed": "max" }""" fire_mqtt_message(self.hass, 'vacuum/state', message) self.hass.block_till_done() state = self.hass.states.get('vacuum.mqtttest') self.assertEqual(STATE_ON, state.state) self.assertEqual( 'mdi:battery-50', state.attributes.get(ATTR_BATTERY_ICON) ) self.assertEqual(54, state.attributes.get(ATTR_BATTERY_LEVEL)) self.assertEqual('max', state.attributes.get(ATTR_FAN_SPEED)) message = """{ "battery_level": 61, "docked": true, "cleaning": false, "charging": true, "fan_speed": "min" }""" fire_mqtt_message(self.hass, 'vacuum/state', message) self.hass.block_till_done() state = self.hass.states.get('vacuum.mqtttest') self.assertEqual(STATE_OFF, state.state) self.assertEqual( 'mdi:battery-charging-60', state.attributes.get(ATTR_BATTERY_ICON) ) self.assertEqual(61, state.attributes.get(ATTR_BATTERY_LEVEL)) self.assertEqual('min', state.attributes.get(ATTR_FAN_SPEED))
def test_battery_template(self): """Test that you can use non-default templates for battery_level.""" self.default_config.update({ mqtt.CONF_SUPPORTED_FEATURES: mqtt.services_to_strings(mqtt.ALL_SERVICES), mqtt.CONF_BATTERY_LEVEL_TOPIC: "retroroomba/battery_level", mqtt.CONF_BATTERY_LEVEL_TEMPLATE: "{{ value }}" }) self.assertTrue(setup_component(self.hass, vacuum.DOMAIN, { vacuum.DOMAIN: self.default_config, })) fire_mqtt_message(self.hass, 'retroroomba/battery_level', '54') self.hass.block_till_done() state = self.hass.states.get('vacuum.mqtttest') self.assertEqual(54, state.attributes.get(ATTR_BATTERY_LEVEL)) self.assertEqual(state.attributes.get(ATTR_BATTERY_ICON), 'mdi:battery-50')