Skip to content

Commit

Permalink
merge the test
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco committed Feb 20, 2021
1 parent 9e26356 commit 627023a
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions tests/components/homekit/test_type_fans.py
Expand Up @@ -7,11 +7,14 @@
ATTR_OSCILLATING,
ATTR_PERCENTAGE,
ATTR_PERCENTAGE_STEP,
ATTR_PRESET_MODE,
ATTR_PRESET_MODES,
DIRECTION_FORWARD,
DIRECTION_REVERSE,
DOMAIN,
SUPPORT_DIRECTION,
SUPPORT_OSCILLATE,
SUPPORT_PRESET_MODE,
SUPPORT_SET_SPEED,
)
from homeassistant.components.homekit.const import ATTR_VALUE, PROP_MIN_STEP
Expand Down Expand Up @@ -557,3 +560,83 @@ async def test_fan_restore(hass, hk_driver, events):
assert acc.char_direction is not None
assert acc.char_speed is not None
assert acc.char_swing is not None


async def test_fan_preset_modes(hass, hk_driver, events):
"""Test fan with direction."""
entity_id = "fan.demo"

hass.states.async_set(
entity_id,
STATE_ON,
{
ATTR_SUPPORTED_FEATURES: SUPPORT_PRESET_MODE,
ATTR_PRESET_MODE: "auto",
ATTR_PRESET_MODES: ["auto", "smart"],
},
)
await hass.async_block_till_done()
acc = Fan(hass, hk_driver, "Fan", entity_id, 1, None)
hk_driver.add_accessory(acc)

assert acc.preset_mode_chars["auto"].value == 1
assert acc.preset_mode_chars["smart"].value == 0

await acc.run()
await hass.async_block_till_done()

hass.states.async_set(
entity_id,
STATE_ON,
{
ATTR_SUPPORTED_FEATURES: SUPPORT_PRESET_MODE,
ATTR_PRESET_MODE: "smart",
ATTR_PRESET_MODES: ["auto", "smart"],
},
)
await hass.async_block_till_done()

assert acc.preset_mode_chars["auto"].value == 0
assert acc.preset_mode_chars["smart"].value == 1
# Set from HomeKit
call_set_preset_mode = async_mock_service(hass, DOMAIN, "set_preset_mode")
call_turn_on = async_mock_service(hass, DOMAIN, "turn_on")

char_auto_iid = acc.preset_mode_chars["auto"].to_HAP()[HAP_REPR_IID]

hk_driver.set_characteristics(
{
HAP_REPR_CHARS: [
{
HAP_REPR_AID: acc.aid,
HAP_REPR_IID: char_auto_iid,
HAP_REPR_VALUE: 1,
},
]
},
"mock_addr",
)
await hass.async_block_till_done()
assert call_set_preset_mode[0]
assert call_set_preset_mode[0].data[ATTR_ENTITY_ID] == entity_id
assert call_set_preset_mode[0].data[ATTR_PRESET_MODE] == "auto"
assert len(events) == 1
assert events[-1].data["service"] == "set_preset_mode"

hk_driver.set_characteristics(
{
HAP_REPR_CHARS: [
{
HAP_REPR_AID: acc.aid,
HAP_REPR_IID: char_auto_iid,
HAP_REPR_VALUE: 0,
},
]
},
"mock_addr",
)
await hass.async_block_till_done()
assert call_turn_on[0]
assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id
assert events[-1].data["service"] == "turn_on"
assert len(events) == 2

0 comments on commit 627023a

Please sign in to comment.