Address old review comments of Tasmota fan ()

* Address review comments of Tasmota fan

* Address review comment
pull/44136/head
Erik Montnemery 2020-12-10 22:17:58 +01:00 committed by GitHub
parent 9cc406fef9
commit 7084d6c650
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 1 deletions
homeassistant/components/tasmota
tests/components/tasmota

View File

@ -63,7 +63,7 @@ class TasmotaFan(
@property
def speed_list(self):
"""Get the list of available speeds."""
return list(HA_TO_TASMOTA_SPEED_MAP.keys())
return list(HA_TO_TASMOTA_SPEED_MAP)
@property
def supported_features(self):
@ -72,6 +72,8 @@ class TasmotaFan(
async def async_set_speed(self, speed):
"""Set the speed of the fan."""
if speed not in HA_TO_TASMOTA_SPEED_MAP:
raise ValueError(f"Unsupported speed {speed}")
if speed == fan.SPEED_OFF:
await self.async_turn_off()
else:

View File

@ -7,6 +7,7 @@ from hatasmota.utils import (
get_topic_tele_state,
get_topic_tele_will,
)
import pytest
from homeassistant.components import fan
from homeassistant.components.tasmota.const import DEFAULT_PREFIX
@ -152,6 +153,33 @@ async def test_sending_mqtt_commands(hass, mqtt_mock, setup_tasmota):
)
async def test_invalid_fan_speed(hass, mqtt_mock, setup_tasmota):
"""Test the sending MQTT commands."""
config = copy.deepcopy(DEFAULT_CONFIG)
config["if"] = 1
mac = config["mac"]
async_fire_mqtt_message(
hass,
f"{DEFAULT_PREFIX}/{mac}/config",
json.dumps(config),
)
await hass.async_block_till_done()
async_fire_mqtt_message(hass, "tasmota_49A3BC/tele/LWT", "Online")
state = hass.states.get("fan.tasmota")
assert state.state == STATE_OFF
await hass.async_block_till_done()
await hass.async_block_till_done()
mqtt_mock.async_publish.reset_mock()
# Set an unsupported speed and verify MQTT message is not sent
with pytest.raises(ValueError) as excinfo:
await common.async_set_speed(hass, "fan.tasmota", "no_such_speed")
assert "Unsupported speed no_such_speed" in str(excinfo.value)
mqtt_mock.async_publish.assert_not_called()
async def test_availability_when_connection_lost(
hass, mqtt_client_mock, mqtt_mock, setup_tasmota
):