Add additional tests

This commit is contained in:
Michael Kowalchuk
2021-11-16 21:50:42 -08:00
parent bd720a27a1
commit 7d505989c7

View File

@@ -1,8 +1,15 @@
"""Test the Z-Wave JS fan platform."""
import math
import pytest
from zwave_js_server.event import Event
from homeassistant.components.fan import ATTR_SPEED, SPEED_MEDIUM
from homeassistant.components.fan import (
ATTR_PERCENTAGE,
ATTR_PERCENTAGE_STEP,
ATTR_SPEED,
SPEED_MEDIUM,
)
STANDARD_FAN_ENTITY = "fan.in_wall_smart_fan_control"
HS_FAN_ENTITY = "fan.scene_capable_fan_control_switch"
@@ -176,7 +183,7 @@ async def test_standard_fan(hass, client, in_wall_smart_fan_control, integration
async def test_hs_fan(hass, client, hs_fc200, integration):
"""Test a fan entity with configurable speeds."""
async def assert_speed_translation(percentage, zwave_speed):
async def assert_percentage_to_zwave_speed(percentage, zwave_speed):
"""Assert that a percentage input is translated to a specific Zwave speed."""
await hass.services.async_call(
"fan",
@@ -193,15 +200,51 @@ async def test_hs_fan(hass, client, hs_fc200, integration):
client.async_send_command.reset_mock()
await assert_speed_translation(0, 0)
await assert_speed_translation(1, 33)
await assert_speed_translation(31, 33)
await assert_speed_translation(32, 33)
await assert_speed_translation(33, 33)
await assert_speed_translation(34, 66)
await assert_speed_translation(65, 66)
await assert_speed_translation(66, 66)
await assert_speed_translation(67, 99)
await assert_speed_translation(68, 99)
await assert_speed_translation(99, 99)
await assert_speed_translation(100, 99)
await assert_percentage_to_zwave_speed(0, 0)
await assert_percentage_to_zwave_speed(1, 33)
await assert_percentage_to_zwave_speed(31, 33)
await assert_percentage_to_zwave_speed(32, 33)
await assert_percentage_to_zwave_speed(33, 33)
await assert_percentage_to_zwave_speed(34, 66)
await assert_percentage_to_zwave_speed(65, 66)
await assert_percentage_to_zwave_speed(66, 66)
await assert_percentage_to_zwave_speed(67, 99)
await assert_percentage_to_zwave_speed(68, 99)
await assert_percentage_to_zwave_speed(99, 99)
await assert_percentage_to_zwave_speed(100, 99)
async def assert_zwave_speed_to_percentage(zwave_speed, percentage):
"""Assert that a ZWave speed is translated to a specific percentage."""
event = Event(
type="value updated",
data={
"source": "node",
"event": "value updated",
"nodeId": 39,
"args": {
"commandClassName": "Multilevel Switch",
"commandClass": 38,
"endpoint": 0,
"property": "currentValue",
"newValue": zwave_speed,
"prevValue": 0,
"propertyName": "currentValue",
},
},
)
hs_fc200.receive_event(event)
state = hass.states.get(HS_FAN_ENTITY)
assert state.attributes[ATTR_PERCENTAGE] == percentage
await assert_zwave_speed_to_percentage(0, 0)
await assert_zwave_speed_to_percentage(1, 33)
await assert_zwave_speed_to_percentage(32, 33)
await assert_zwave_speed_to_percentage(33, 33)
await assert_zwave_speed_to_percentage(34, 67)
await assert_zwave_speed_to_percentage(66, 67)
await assert_zwave_speed_to_percentage(67, 100)
await assert_zwave_speed_to_percentage(99, 100)
state = hass.states.get(HS_FAN_ENTITY)
assert math.isclose(state.attributes[ATTR_PERCENTAGE_STEP], 33.3333, rel_tol=1e-3)