Пример #1
0
async def test_all_commands(hass, mqtt_mock):
    """Test simple commands send to the vacuum."""
    config = deepcopy(DEFAULT_CONFIG)
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = services_to_strings(
        mqttvacuum.ALL_SERVICES, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN,
                                       {vacuum.DOMAIN: config})

    await hass.services.async_call(DOMAIN, SERVICE_START, blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC, "start", 0,
                                                    False)
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(DOMAIN, SERVICE_STOP, blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC, "stop", 0,
                                                    False)
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(DOMAIN, SERVICE_PAUSE, blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC, "pause", 0,
                                                    False)
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(DOMAIN, SERVICE_LOCATE, blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC, "locate", 0,
                                                    False)
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(DOMAIN, SERVICE_CLEAN_SPOT, blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC,
                                                    "clean_spot", 0, False)
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(DOMAIN,
                                   SERVICE_RETURN_TO_BASE,
                                   blocking=True)
    mqtt_mock.async_publish.assert_called_once_with(COMMAND_TOPIC,
                                                    "return_to_base", 0, False)
    mqtt_mock.async_publish.reset_mock()

    await common.async_set_fan_speed(hass, "medium", "vacuum.mqtttest")
    mqtt_mock.async_publish.assert_called_once_with("vacuum/set_fan_speed",
                                                    "medium", 0, False)
    mqtt_mock.async_publish.reset_mock()

    await common.async_send_command(hass,
                                    "44 FE 93",
                                    entity_id="vacuum.mqtttest")
    mqtt_mock.async_publish.assert_called_once_with("vacuum/send_command",
                                                    "44 FE 93", 0, False)
    mqtt_mock.async_publish.reset_mock()

    await common.async_send_command(hass,
                                    "44 FE 93", {"key": "value"},
                                    entity_id="vacuum.mqtttest")
    assert json.loads(mqtt_mock.async_publish.mock_calls[-1][1][1]) == {
        "command": "44 FE 93",
        "key": "value",
    }
Пример #2
0
async def test_default_supported_features(hass, mock_publish):
    """Test that the correct supported features."""
    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })
    entity = hass.states.get('vacuum.mqtttest')
    entity_features = \
        entity.attributes.get(mqttvacuum.CONF_SUPPORTED_FEATURES, 0)
    assert sorted(mqttvacuum.services_to_strings(entity_features)) == \
        sorted(['turn_on', 'turn_off', 'stop',
                'return_home', 'battery', 'status',
                'clean_spot'])
Пример #3
0
async def test_default_supported_features(hass, mqtt_mock):
    """Test that the correct supported features."""
    assert await async_setup_component(hass, vacuum.DOMAIN,
                                       {vacuum.DOMAIN: DEFAULT_CONFIG})
    entity = hass.states.get("vacuum.mqtttest")
    entity_features = entity.attributes.get(mqttvacuum.CONF_SUPPORTED_FEATURES,
                                            0)
    assert sorted(services_to_strings(entity_features,
                                      SERVICE_TO_STRING)) == sorted([
                                          "start", "stop", "return_home",
                                          "battery", "status", "clean_spot"
                                      ])
Пример #4
0
async def test_default_supported_features(hass, mqtt_mock):
    """Test that the correct supported features."""
    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: DEFAULT_CONFIG,
    })
    entity = hass.states.get('vacuum.mqtttest')
    entity_features = \
        entity.attributes.get(mqttvacuum.CONF_SUPPORTED_FEATURES, 0)
    assert sorted(services_to_strings(entity_features, SERVICE_TO_STRING)) == \
        sorted(['turn_on', 'turn_off', 'stop',
                'return_home', 'battery', 'status',
                'clean_spot'])
Пример #5
0
async def test_status_invalid_json(hass, mock_publish):
    """Test to make sure nothing breaks if the vacuum sends bad JSON."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    async_fire_mqtt_message(hass, 'vacuum/state', '{"asdfasas false}')
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_OFF == state.state
    assert "Stopped" == state.attributes.get(ATTR_STATUS)
Пример #6
0
async def test_attributes_without_supported_features(hass, mqtt_mock):
    """Test attributes which are not supported by the vacuum."""
    config = deepcopy(DEFAULT_CONFIG)
    services = mqttvacuum.STRING_TO_SERVICE["turn_on"]
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = services_to_strings(
        services, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN,
                                       {vacuum.DOMAIN: config})

    state = hass.states.get("vacuum.mqtttest")
    assert state.state == STATE_OFF
    assert state.attributes.get(ATTR_BATTERY_LEVEL) is None
    assert state.attributes.get(ATTR_BATTERY_ICON) is None
Пример #7
0
async def test_status_invalid_json(hass, mock_publish):
    """Test to make sure nothing breaks if the vacuum sends bad JSON."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    async_fire_mqtt_message(hass, 'vacuum/state', '{"asdfasas false}')
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_OFF == state.state
    assert "Stopped" == state.attributes.get(ATTR_STATUS)
Пример #8
0
async def test_commands_without_supported_features(hass, mqtt_mock):
    """Test commands which are not supported by the vacuum."""
    config = deepcopy(DEFAULT_CONFIG)
    services = mqttvacuum.STRING_TO_SERVICE["status"]
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        services_to_strings(
            services, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: config,
    })

    await hass.services.async_call(
        DOMAIN, SERVICE_START, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(
        DOMAIN, SERVICE_PAUSE, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(
        DOMAIN, SERVICE_STOP, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(
        DOMAIN, SERVICE_RETURN_TO_BASE, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(
        DOMAIN, SERVICE_LOCATE, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await hass.services.async_call(
        DOMAIN, SERVICE_CLEAN_SPOT, blocking=True)
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_set_fan_speed(hass, 'medium', 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_send_command(hass, '44 FE 93', {"key": "value"},
                                    entity_id='vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
Пример #9
0
async def test_commands_without_supported_features(hass, mqtt_mock):
    """Test commands which are not supported by the vacuum."""
    config = deepcopy(DEFAULT_CONFIG)
    services = mqttvacuum.STRING_TO_SERVICE["status"]
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        services_to_strings(
            services, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: config,
    })

    await common.async_turn_on(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_turn_off(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_stop(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_clean_spot(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_locate(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_start_pause(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_return_to_base(hass, 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_set_fan_speed(hass, 'high', 'vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()

    await common.async_send_command(hass,
                                    '44 FE 93',
                                    entity_id='vacuum.mqtttest')
    mqtt_mock.async_publish.assert_not_called()
    mqtt_mock.async_publish.reset_mock()
Пример #10
0
async def test_no_fan_vacuum(hass, mqtt_mock):
    """Test status updates from the vacuum when fan is not supported."""
    config = deepcopy(DEFAULT_CONFIG)
    del config[mqttvacuum.CONF_FAN_SPEED_LIST]
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        services_to_strings(mqttvacuum.DEFAULT_SERVICES, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: config,
    })

    message = """{
        "battery_level": 54,
        "state": "cleaning"
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    state = hass.states.get('vacuum.mqtttest')
    assert state.state == STATE_CLEANING
    assert state.attributes.get(ATTR_FAN_SPEED) is None
    assert state.attributes.get(ATTR_FAN_SPEED_LIST) is None
    assert state.attributes.get(ATTR_BATTERY_LEVEL) == 54
    assert state.attributes.get(ATTR_BATTERY_ICON) == 'mdi:battery-50'

    message = """{
        "battery_level": 54,
        "state": "cleaning",
        "fan_speed": "max"
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    state = hass.states.get('vacuum.mqtttest')

    assert state.state == STATE_CLEANING
    assert state.attributes.get(ATTR_FAN_SPEED) is None
    assert state.attributes.get(ATTR_FAN_SPEED_LIST) is None

    assert state.attributes.get(ATTR_BATTERY_LEVEL) == 54
    assert state.attributes.get(ATTR_BATTERY_ICON) == 'mdi:battery-50'

    message = """{
        "battery_level": 61,
        "state": "docked"
    }"""

    async_fire_mqtt_message(hass, 'vacuum/state', message)
    state = hass.states.get('vacuum.mqtttest')
    assert state.state == STATE_DOCKED
    assert state.attributes.get(ATTR_BATTERY_ICON) == 'mdi:battery-charging-60'
    assert state.attributes.get(ATTR_BATTERY_LEVEL) == 61
Пример #11
0
async def test_status_docked(hass, mock_publish):
    """Test status updates from the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    message = """{
        "docked": true
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_OFF == state.state
Пример #12
0
async def test_status_error(hass, mock_publish):
    """Test status updates from the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    message = """{
        "error": "Error1"
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert 'Error: Error1' == state.attributes.get(ATTR_STATUS)
Пример #13
0
async def test_status_charging(hass, mock_publish):
    """Test status updates from the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    message = """{
        "charging": true
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert 'mdi:battery-outline' == \
        state.attributes.get(ATTR_BATTERY_ICON)
Пример #14
0
async def test_battery_template(hass, mock_publish):
    """Test that you can use non-default templates for battery_level."""
    default_config.update({
        mqttvacuum.CONF_SUPPORTED_FEATURES:
            mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES),
        mqttvacuum.CONF_BATTERY_LEVEL_TOPIC: "retroroomba/battery_level",
        mqttvacuum.CONF_BATTERY_LEVEL_TEMPLATE: "{{ value }}"
    })

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    async_fire_mqtt_message(hass, 'retroroomba/battery_level', '54')
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert 54 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert state.attributes.get(ATTR_BATTERY_ICON) == \
        'mdi:battery-50'
Пример #15
0
async def test_status(hass, mock_publish):
    """Test status updates from the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    message = """{
        "battery_level": 54,
        "cleaning": true,
        "docked": false,
        "charging": false,
        "fan_speed": "max"
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_ON == state.state
    assert 'mdi:battery-50' == \
        state.attributes.get(ATTR_BATTERY_ICON)
    assert 54 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert 'max' == state.attributes.get(ATTR_FAN_SPEED)

    message = """{
        "battery_level": 61,
        "docked": true,
        "cleaning": false,
        "charging": true,
        "fan_speed": "min"
    }"""

    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_OFF == state.state
    assert 'mdi:battery-charging-60' == \
        state.attributes.get(ATTR_BATTERY_ICON)
    assert 61 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert 'min' == state.attributes.get(ATTR_FAN_SPEED)
Пример #16
0
async def test_status(hass, mock_publish):
    """Test status updates from the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    message = """{
        "battery_level": 54,
        "cleaning": true,
        "docked": false,
        "charging": false,
        "fan_speed": "max"
    }"""
    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_ON == state.state
    assert 'mdi:battery-50' == \
        state.attributes.get(ATTR_BATTERY_ICON)
    assert 54 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert 'max' == state.attributes.get(ATTR_FAN_SPEED)

    message = """{
        "battery_level": 61,
        "docked": true,
        "cleaning": false,
        "charging": true,
        "fan_speed": "min"
    }"""

    async_fire_mqtt_message(hass, 'vacuum/state', message)
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert STATE_OFF == state.state
    assert 'mdi:battery-charging-60' == \
        state.attributes.get(ATTR_BATTERY_ICON)
    assert 61 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert 'min' == state.attributes.get(ATTR_FAN_SPEED)
Пример #17
0
async def test_battery_template(hass, mock_publish):
    """Test that you can use non-default templates for battery_level."""
    default_config.update({
        mqttvacuum.CONF_SUPPORTED_FEATURES:
            mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES),
        mqttvacuum.CONF_BATTERY_LEVEL_TOPIC: "retroroomba/battery_level",
        mqttvacuum.CONF_BATTERY_LEVEL_TEMPLATE: "{{ value }}"
    })

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    async_fire_mqtt_message(hass, 'retroroomba/battery_level', '54')
    await hass.async_block_till_done()
    state = hass.states.get('vacuum.mqtttest')
    assert 54 == state.attributes.get(ATTR_BATTERY_LEVEL)
    assert state.attributes.get(ATTR_BATTERY_ICON) == \
        'mdi:battery-50'
Пример #18
0
async def test_status(hass, mqtt_mock):
    """Test status updates from the vacuum."""
    config = deepcopy(DEFAULT_CONFIG)
    config[mqttvacuum.CONF_SUPPORTED_FEATURES] = services_to_strings(
        mqttvacuum.ALL_SERVICES, SERVICE_TO_STRING)

    assert await async_setup_component(hass, vacuum.DOMAIN,
                                       {vacuum.DOMAIN: config})

    message = """{
        "battery_level": 54,
        "state": "cleaning",
        "fan_speed": "max"
    }"""
    async_fire_mqtt_message(hass, "vacuum/state", message)
    state = hass.states.get("vacuum.mqtttest")
    assert state.state == STATE_CLEANING
    assert state.attributes.get(ATTR_BATTERY_LEVEL) == 54
    assert state.attributes.get(ATTR_BATTERY_ICON) == "mdi:battery-50"
    assert state.attributes.get(ATTR_FAN_SPEED) == "max"

    message = """{
        "battery_level": 61,
        "state": "docked",
        "fan_speed": "min"
    }"""

    async_fire_mqtt_message(hass, "vacuum/state", message)
    state = hass.states.get("vacuum.mqtttest")
    assert state.state == STATE_DOCKED
    assert state.attributes.get(ATTR_BATTERY_ICON) == "mdi:battery-charging-60"
    assert state.attributes.get(ATTR_BATTERY_LEVEL) == 61
    assert state.attributes.get(ATTR_FAN_SPEED) == "min"
    assert state.attributes.get(ATTR_FAN_SPEED_LIST) == [
        "min", "medium", "high", "max"
    ]
Пример #19
0
async def test_all_commands(hass, mock_publish):
    """Test simple commands to the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    common.turn_on(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'turn_on', 0, False)
    mock_publish.async_publish.reset_mock()

    common.turn_off(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'turn_off', 0, False)
    mock_publish.async_publish.reset_mock()

    common.stop(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'stop', 0, False)
    mock_publish.async_publish.reset_mock()

    common.clean_spot(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'clean_spot', 0, False)
    mock_publish.async_publish.reset_mock()

    common.locate(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'locate', 0, False)
    mock_publish.async_publish.reset_mock()

    common.start_pause(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'start_pause', 0, False)
    mock_publish.async_publish.reset_mock()

    common.return_to_base(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/command',
                                                       'return_to_base', 0,
                                                       False)
    mock_publish.async_publish.reset_mock()

    common.set_fan_speed(hass, 'high', 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/set_fan_speed',
                                                       'high', 0, False)
    mock_publish.async_publish.reset_mock()

    common.send_command(hass, '44 FE 93', entity_id='vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with('vacuum/send_command',
                                                       '44 FE 93', 0, False)
Пример #20
0
async def test_all_commands(hass, mock_publish):
    """Test simple commands to the vacuum."""
    default_config[mqttvacuum.CONF_SUPPORTED_FEATURES] = \
        mqttvacuum.services_to_strings(mqttvacuum.ALL_SERVICES)

    assert await async_setup_component(hass, vacuum.DOMAIN, {
        vacuum.DOMAIN: default_config,
    })

    common.turn_on(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'turn_on', 0, False)
    mock_publish.async_publish.reset_mock()

    common.turn_off(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'turn_off', 0, False)
    mock_publish.async_publish.reset_mock()

    common.stop(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'stop', 0, False)
    mock_publish.async_publish.reset_mock()

    common.clean_spot(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'clean_spot', 0, False)
    mock_publish.async_publish.reset_mock()

    common.locate(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'locate', 0, False)
    mock_publish.async_publish.reset_mock()

    common.start_pause(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'start_pause', 0, False)
    mock_publish.async_publish.reset_mock()

    common.return_to_base(hass, 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/command', 'return_to_base', 0, False)
    mock_publish.async_publish.reset_mock()

    common.set_fan_speed(hass, 'high', 'vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/set_fan_speed', 'high', 0, False)
    mock_publish.async_publish.reset_mock()

    common.send_command(hass, '44 FE 93', entity_id='vacuum.mqtttest')
    await hass.async_block_till_done()
    await hass.async_block_till_done()
    mock_publish.async_publish.assert_called_once_with(
        'vacuum/send_command', '44 FE 93', 0, False)