mirror of
https://github.com/home-assistant/core.git
synced 2025-08-21 05:22:18 +02:00
Add additional tests
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user