mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 19:09:32 +00:00
Reorder Google Assistant Traits (#127646)
This commit is contained in:
committed by
GitHub
parent
e5a07da0c9
commit
c0f19dd963
@@ -187,12 +187,12 @@ async def test_onoff_group(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, HOMEASSISTANT_DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "group.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, HOMEASSISTANT_DOMAIN, SERVICE_TURN_OFF)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "group.bla"}
|
||||
|
||||
@@ -215,12 +215,12 @@ async def test_onoff_input_boolean(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, input_boolean.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "input_boolean.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, input_boolean.DOMAIN, SERVICE_TURN_OFF)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "input_boolean.bla"}
|
||||
|
||||
@@ -282,12 +282,12 @@ async def test_onoff_switch(hass: HomeAssistant) -> None:
|
||||
assert trt_assumed.sync_attributes() == {"commandOnlyOnOff": True}
|
||||
|
||||
on_calls = async_mock_service(hass, switch.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "switch.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, switch.DOMAIN, SERVICE_TURN_OFF)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "switch.bla"}
|
||||
|
||||
@@ -307,12 +307,12 @@ async def test_onoff_fan(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, fan.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "fan.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, fan.DOMAIN, SERVICE_TURN_OFF)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "fan.bla"}
|
||||
|
||||
@@ -333,12 +333,12 @@ async def test_onoff_light(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "light.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_OFF)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "light.bla"}
|
||||
|
||||
@@ -359,13 +359,13 @@ async def test_onoff_media_player(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, media_player.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "media_player.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, media_player.DOMAIN, SERVICE_TURN_OFF)
|
||||
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "media_player.bla"}
|
||||
|
||||
@@ -386,13 +386,13 @@ async def test_onoff_humidifier(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, humidifier.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "humidifier.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, humidifier.DOMAIN, SERVICE_TURN_OFF)
|
||||
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "humidifier.bla"}
|
||||
|
||||
@@ -415,13 +415,13 @@ async def test_onoff_water_heater(hass: HomeAssistant) -> None:
|
||||
assert trt_off.query_attributes() == {"on": False}
|
||||
|
||||
on_calls = async_mock_service(hass, water_heater.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": True}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": True}, {})
|
||||
assert len(on_calls) == 1
|
||||
assert on_calls[0].data == {ATTR_ENTITY_ID: "water_heater.bla"}
|
||||
|
||||
off_calls = async_mock_service(hass, water_heater.DOMAIN, SERVICE_TURN_OFF)
|
||||
|
||||
await trt_on.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt_on.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert len(off_calls) == 1
|
||||
assert off_calls[0].data == {ATTR_ENTITY_ID: "water_heater.bla"}
|
||||
|
||||
@@ -562,22 +562,22 @@ async def test_startstop_vacuum(hass: HomeAssistant) -> None:
|
||||
assert trt.query_attributes() == {"isRunning": False, "isPaused": True}
|
||||
|
||||
start_calls = async_mock_service(hass, vacuum.DOMAIN, vacuum.SERVICE_START)
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": True}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": True}, {})
|
||||
assert len(start_calls) == 1
|
||||
assert start_calls[0].data == {ATTR_ENTITY_ID: "vacuum.bla"}
|
||||
|
||||
stop_calls = async_mock_service(hass, vacuum.DOMAIN, vacuum.SERVICE_STOP)
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": False}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": False}, {})
|
||||
assert len(stop_calls) == 1
|
||||
assert stop_calls[0].data == {ATTR_ENTITY_ID: "vacuum.bla"}
|
||||
|
||||
pause_calls = async_mock_service(hass, vacuum.DOMAIN, vacuum.SERVICE_PAUSE)
|
||||
await trt.execute(trait.COMMAND_PAUSEUNPAUSE, BASIC_DATA, {"pause": True}, {})
|
||||
await trt.execute(trait.COMMAND_PAUSE_UNPAUSE, BASIC_DATA, {"pause": True}, {})
|
||||
assert len(pause_calls) == 1
|
||||
assert pause_calls[0].data == {ATTR_ENTITY_ID: "vacuum.bla"}
|
||||
|
||||
unpause_calls = async_mock_service(hass, vacuum.DOMAIN, vacuum.SERVICE_START)
|
||||
await trt.execute(trait.COMMAND_PAUSEUNPAUSE, BASIC_DATA, {"pause": False}, {})
|
||||
await trt.execute(trait.COMMAND_PAUSE_UNPAUSE, BASIC_DATA, {"pause": False}, {})
|
||||
assert len(unpause_calls) == 1
|
||||
assert unpause_calls[0].data == {ATTR_ENTITY_ID: "vacuum.bla"}
|
||||
|
||||
@@ -665,7 +665,7 @@ async def test_startstop_cover_valve(
|
||||
open_calls = async_mock_service(hass, domain, service_open)
|
||||
close_calls = async_mock_service(hass, domain, service_close)
|
||||
toggle_calls = async_mock_service(hass, domain, service_toggle)
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": False}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": False}, {})
|
||||
assert len(stop_calls) == 1
|
||||
assert stop_calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
|
||||
@@ -681,18 +681,18 @@ async def test_startstop_cover_valve(
|
||||
with pytest.raises(
|
||||
SmartHomeError, match=f"{domain.capitalize()} is already stopped"
|
||||
):
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": False}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": False}, {})
|
||||
|
||||
# Start triggers toggle open
|
||||
state.state = state_closed
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": True}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": True}, {})
|
||||
assert len(open_calls) == 0
|
||||
assert len(close_calls) == 0
|
||||
assert len(toggle_calls) == 1
|
||||
assert toggle_calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
# Second start triggers toggle close
|
||||
state.state = state_open
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": True}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": True}, {})
|
||||
assert len(open_calls) == 0
|
||||
assert len(close_calls) == 0
|
||||
assert len(toggle_calls) == 2
|
||||
@@ -703,7 +703,7 @@ async def test_startstop_cover_valve(
|
||||
SmartHomeError,
|
||||
match="Command action.devices.commands.PauseUnpause is not supported",
|
||||
):
|
||||
await trt.execute(trait.COMMAND_PAUSEUNPAUSE, BASIC_DATA, {"start": True}, {})
|
||||
await trt.execute(trait.COMMAND_PAUSE_UNPAUSE, BASIC_DATA, {"start": True}, {})
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -779,13 +779,13 @@ async def test_startstop_cover_valve_assumed(
|
||||
|
||||
stop_calls = async_mock_service(hass, domain, service_stop)
|
||||
toggle_calls = async_mock_service(hass, domain, service_toggle)
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": False}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": False}, {})
|
||||
assert len(stop_calls) == 1
|
||||
assert len(toggle_calls) == 0
|
||||
assert stop_calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
|
||||
stop_calls.clear()
|
||||
await trt.execute(trait.COMMAND_STARTSTOP, BASIC_DATA, {"start": True}, {})
|
||||
await trt.execute(trait.COMMAND_START_STOP, BASIC_DATA, {"start": True}, {})
|
||||
assert len(stop_calls) == 0
|
||||
assert len(toggle_calls) == 1
|
||||
assert toggle_calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
@@ -984,13 +984,13 @@ async def test_light_modes(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"effect": "colorloop"}},
|
||||
)
|
||||
|
||||
calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_ON)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"effect": "colorloop"}},
|
||||
{},
|
||||
@@ -1422,7 +1422,7 @@ async def test_temperature_control(hass: HomeAssistant) -> None:
|
||||
"temperatureAmbientCelsius": 18,
|
||||
}
|
||||
with pytest.raises(helpers.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert err.value.code == const.ERR_NOT_SUPPORTED
|
||||
|
||||
|
||||
@@ -1609,11 +1609,11 @@ async def test_lock_unlock_lock(hass: HomeAssistant) -> None:
|
||||
|
||||
assert trt.query_attributes() == {"isLocked": True}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_LOCKUNLOCK, {"lock": True})
|
||||
assert trt.can_execute(trait.COMMAND_LOCK_UNLOCK, {"lock": True})
|
||||
|
||||
calls = async_mock_service(hass, lock.DOMAIN, lock.SERVICE_LOCK)
|
||||
|
||||
await trt.execute(trait.COMMAND_LOCKUNLOCK, PIN_DATA, {"lock": True}, {})
|
||||
await trt.execute(trait.COMMAND_LOCK_UNLOCK, PIN_DATA, {"lock": True}, {})
|
||||
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: "lock.front_door"}
|
||||
@@ -1652,11 +1652,11 @@ async def test_lock_unlock_lock_jammed(hass: HomeAssistant) -> None:
|
||||
|
||||
assert trt.query_attributes() == {"isJammed": True}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_LOCKUNLOCK, {"lock": True})
|
||||
assert trt.can_execute(trait.COMMAND_LOCK_UNLOCK, {"lock": True})
|
||||
|
||||
calls = async_mock_service(hass, lock.DOMAIN, lock.SERVICE_LOCK)
|
||||
|
||||
await trt.execute(trait.COMMAND_LOCKUNLOCK, PIN_DATA, {"lock": True}, {})
|
||||
await trt.execute(trait.COMMAND_LOCK_UNLOCK, PIN_DATA, {"lock": True}, {})
|
||||
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: "lock.front_door"}
|
||||
@@ -1677,13 +1677,13 @@ async def test_lock_unlock_unlock(hass: HomeAssistant) -> None:
|
||||
|
||||
assert trt.query_attributes() == {"isLocked": True}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_LOCKUNLOCK, {"lock": False})
|
||||
assert trt.can_execute(trait.COMMAND_LOCK_UNLOCK, {"lock": False})
|
||||
|
||||
calls = async_mock_service(hass, lock.DOMAIN, lock.SERVICE_UNLOCK)
|
||||
|
||||
# No challenge data
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(trait.COMMAND_LOCKUNLOCK, PIN_DATA, {"lock": False}, {})
|
||||
await trt.execute(trait.COMMAND_LOCK_UNLOCK, PIN_DATA, {"lock": False}, {})
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
assert err.value.challenge_type == const.CHALLENGE_PIN_NEEDED
|
||||
@@ -1691,14 +1691,14 @@ async def test_lock_unlock_unlock(hass: HomeAssistant) -> None:
|
||||
# invalid pin
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_LOCKUNLOCK, PIN_DATA, {"lock": False}, {"pin": 9999}
|
||||
trait.COMMAND_LOCK_UNLOCK, PIN_DATA, {"lock": False}, {"pin": 9999}
|
||||
)
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
assert err.value.challenge_type == const.CHALLENGE_FAILED_PIN_NEEDED
|
||||
|
||||
await trt.execute(
|
||||
trait.COMMAND_LOCKUNLOCK, PIN_DATA, {"lock": False}, {"pin": "1234"}
|
||||
trait.COMMAND_LOCK_UNLOCK, PIN_DATA, {"lock": False}, {"pin": "1234"}
|
||||
)
|
||||
|
||||
assert len(calls) == 1
|
||||
@@ -1710,7 +1710,7 @@ async def test_lock_unlock_unlock(hass: HomeAssistant) -> None:
|
||||
)
|
||||
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_LOCKUNLOCK, BASIC_DATA, {"lock": False}, {})
|
||||
await trt.execute(trait.COMMAND_LOCK_UNLOCK, BASIC_DATA, {"lock": False}, {})
|
||||
assert len(calls) == 1
|
||||
assert err.value.code == const.ERR_CHALLENGE_NOT_SETUP
|
||||
|
||||
@@ -1720,7 +1720,7 @@ async def test_lock_unlock_unlock(hass: HomeAssistant) -> None:
|
||||
"should_2fa",
|
||||
return_value=False,
|
||||
):
|
||||
await trt.execute(trait.COMMAND_LOCKUNLOCK, BASIC_DATA, {"lock": False}, {})
|
||||
await trt.execute(trait.COMMAND_LOCK_UNLOCK, BASIC_DATA, {"lock": False}, {})
|
||||
assert len(calls) == 2
|
||||
|
||||
|
||||
@@ -1769,7 +1769,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_ARMDISARM, {"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY}
|
||||
trait.COMMAND_ARM_DISARM, {"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY}
|
||||
)
|
||||
|
||||
calls = async_mock_service(
|
||||
@@ -1789,7 +1789,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
)
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
BASIC_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{},
|
||||
@@ -1809,7 +1809,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
# No challenge data
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{},
|
||||
@@ -1821,7 +1821,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
# invalid pin
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{"pin": 9999},
|
||||
@@ -1832,7 +1832,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
|
||||
# correct pin
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{"pin": "1234"},
|
||||
@@ -1852,7 +1852,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
)
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{},
|
||||
@@ -1871,7 +1871,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
PIN_CONFIG,
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
|
||||
{},
|
||||
@@ -1880,7 +1880,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM,
|
||||
trait.COMMAND_ARM_DISARM,
|
||||
PIN_DATA,
|
||||
{"arm": True},
|
||||
{},
|
||||
@@ -1942,7 +1942,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
"isArmed": False,
|
||||
}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_ARMDISARM, {"arm": False})
|
||||
assert trt.can_execute(trait.COMMAND_ARM_DISARM, {"arm": False})
|
||||
|
||||
calls = async_mock_service(
|
||||
hass, alarm_control_panel.DOMAIN, alarm_control_panel.SERVICE_ALARM_DISARM
|
||||
@@ -1959,7 +1959,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
BASIC_CONFIG,
|
||||
)
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_ARMDISARM, BASIC_DATA, {"arm": False}, {})
|
||||
await trt.execute(trait.COMMAND_ARM_DISARM, BASIC_DATA, {"arm": False}, {})
|
||||
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NOT_SETUP
|
||||
@@ -1976,7 +1976,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
|
||||
# No challenge data
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": False}, {})
|
||||
await trt.execute(trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": False}, {})
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
assert err.value.challenge_type == const.CHALLENGE_PIN_NEEDED
|
||||
@@ -1984,7 +1984,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
# invalid pin
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": False}, {"pin": 9999}
|
||||
trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": False}, {"pin": 9999}
|
||||
)
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
@@ -1992,7 +1992,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
|
||||
# correct pin
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": False}, {"pin": "1234"}
|
||||
trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": False}, {"pin": "1234"}
|
||||
)
|
||||
|
||||
assert len(calls) == 1
|
||||
@@ -2008,7 +2008,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
PIN_CONFIG,
|
||||
)
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": False}, {})
|
||||
await trt.execute(trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": False}, {})
|
||||
assert len(calls) == 1
|
||||
assert err.value.code == const.ERR_ALREADY_DISARMED
|
||||
|
||||
@@ -2025,7 +2025,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
# Cancel arming after already armed will require pin
|
||||
with pytest.raises(error.SmartHomeError) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": True, "cancel": True}, {}
|
||||
trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": True, "cancel": True}, {}
|
||||
)
|
||||
assert len(calls) == 1
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
@@ -2042,7 +2042,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
PIN_CONFIG,
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_ARMDISARM, PIN_DATA, {"arm": True, "cancel": True}, {}
|
||||
trait.COMMAND_ARM_DISARM, PIN_DATA, {"arm": True, "cancel": True}, {}
|
||||
)
|
||||
assert len(calls) == 2
|
||||
|
||||
@@ -2078,10 +2078,12 @@ async def test_fan_speed(hass: HomeAssistant) -> None:
|
||||
"currentFanSpeedSetting": ANY,
|
||||
}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_FANSPEED, params={"fanSpeedPercent": 10})
|
||||
assert trt.can_execute(trait.COMMAND_SET_FAN_SPEED, params={"fanSpeedPercent": 10})
|
||||
|
||||
calls = async_mock_service(hass, fan.DOMAIN, fan.SERVICE_SET_PERCENTAGE)
|
||||
await trt.execute(trait.COMMAND_FANSPEED, BASIC_DATA, {"fanSpeedPercent": 10}, {})
|
||||
await trt.execute(
|
||||
trait.COMMAND_SET_FAN_SPEED, BASIC_DATA, {"fanSpeedPercent": 10}, {}
|
||||
)
|
||||
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {"entity_id": "fan.living_room_fan", "percentage": 10}
|
||||
@@ -2216,10 +2218,10 @@ async def test_fan_speed_ordered(
|
||||
"currentFanSpeedSetting": speed,
|
||||
}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_FANSPEED, params={"fanSpeed": speed})
|
||||
assert trt.can_execute(trait.COMMAND_SET_FAN_SPEED, params={"fanSpeed": speed})
|
||||
|
||||
calls = async_mock_service(hass, fan.DOMAIN, fan.SERVICE_SET_PERCENTAGE)
|
||||
await trt.execute(trait.COMMAND_FANSPEED, BASIC_DATA, {"fanSpeed": speed}, {})
|
||||
await trt.execute(trait.COMMAND_SET_FAN_SPEED, BASIC_DATA, {"fanSpeed": speed}, {})
|
||||
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {
|
||||
@@ -2328,10 +2330,12 @@ async def test_climate_fan_speed(hass: HomeAssistant) -> None:
|
||||
"currentFanSpeedSetting": "low",
|
||||
}
|
||||
|
||||
assert trt.can_execute(trait.COMMAND_FANSPEED, params={"fanSpeed": "medium"})
|
||||
assert trt.can_execute(trait.COMMAND_SET_FAN_SPEED, params={"fanSpeed": "medium"})
|
||||
|
||||
calls = async_mock_service(hass, climate.DOMAIN, climate.SERVICE_SET_FAN_MODE)
|
||||
await trt.execute(trait.COMMAND_FANSPEED, BASIC_DATA, {"fanSpeed": "medium"}, {})
|
||||
await trt.execute(
|
||||
trait.COMMAND_SET_FAN_SPEED, BASIC_DATA, {"fanSpeed": "medium"}, {}
|
||||
)
|
||||
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {
|
||||
@@ -2387,7 +2391,7 @@ async def test_inputselector(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_INPUT,
|
||||
trait.COMMAND_SET_INPUT,
|
||||
params={"newInput": "media"},
|
||||
)
|
||||
|
||||
@@ -2395,7 +2399,7 @@ async def test_inputselector(hass: HomeAssistant) -> None:
|
||||
hass, media_player.DOMAIN, media_player.SERVICE_SELECT_SOURCE
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_INPUT,
|
||||
trait.COMMAND_SET_INPUT,
|
||||
BASIC_DATA,
|
||||
{"newInput": "media"},
|
||||
{},
|
||||
@@ -2563,7 +2567,7 @@ async def test_modes_input_select(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"option": "xyz"}},
|
||||
)
|
||||
|
||||
@@ -2571,7 +2575,7 @@ async def test_modes_input_select(hass: HomeAssistant) -> None:
|
||||
hass, input_select.DOMAIN, input_select.SERVICE_SELECT_OPTION
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"option": "xyz"}},
|
||||
{},
|
||||
@@ -2639,13 +2643,13 @@ async def test_modes_select(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"option": "xyz"}},
|
||||
)
|
||||
|
||||
calls = async_mock_service(hass, select.DOMAIN, select.SERVICE_SELECT_OPTION)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"option": "xyz"}},
|
||||
{},
|
||||
@@ -2716,12 +2720,12 @@ async def test_modes_humidifier(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES, params={"updateModeSettings": {"mode": "away"}}
|
||||
trait.COMMAND_SET_MODES, params={"updateModeSettings": {"mode": "away"}}
|
||||
)
|
||||
|
||||
calls = async_mock_service(hass, humidifier.DOMAIN, humidifier.SERVICE_SET_MODE)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"mode": "away"}},
|
||||
{},
|
||||
@@ -2792,14 +2796,15 @@ async def test_modes_water_heater(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES, params={"updateModeSettings": {"operation mode": "gas"}}
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"operation mode": "gas"}},
|
||||
)
|
||||
|
||||
calls = async_mock_service(
|
||||
hass, water_heater.DOMAIN, water_heater.SERVICE_SET_OPERATION_MODE
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"operation mode": "gas"}},
|
||||
{},
|
||||
@@ -2868,7 +2873,7 @@ async def test_sound_modes(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"sound mode": "stereo"}},
|
||||
)
|
||||
|
||||
@@ -2876,7 +2881,7 @@ async def test_sound_modes(hass: HomeAssistant) -> None:
|
||||
hass, media_player.DOMAIN, media_player.SERVICE_SELECT_SOUND_MODE
|
||||
)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"sound mode": "stereo"}},
|
||||
{},
|
||||
@@ -2941,13 +2946,13 @@ async def test_preset_modes(hass: HomeAssistant) -> None:
|
||||
}
|
||||
|
||||
assert trt.can_execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
params={"updateModeSettings": {"preset mode": "auto"}},
|
||||
)
|
||||
|
||||
calls = async_mock_service(hass, fan.DOMAIN, fan.SERVICE_SET_PRESET_MODE)
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {"preset mode": "auto"}},
|
||||
{},
|
||||
@@ -2975,7 +2980,7 @@ async def test_traits_unknown_domains(
|
||||
|
||||
assert trt.supported("not_supported_domain", False, None, None) is False
|
||||
await trt.execute(
|
||||
trait.COMMAND_MODES,
|
||||
trait.COMMAND_SET_MODES,
|
||||
BASIC_DATA,
|
||||
{"updateModeSettings": {}},
|
||||
{},
|
||||
@@ -3049,9 +3054,9 @@ async def test_openclose_cover_valve(
|
||||
calls_open = async_mock_service(hass, domain, open_service)
|
||||
calls_close = async_mock_service(hass, domain, close_service)
|
||||
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 50}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 50}, {})
|
||||
await trt.execute(
|
||||
trait.COMMAND_OPENCLOSE_RELATIVE, BASIC_DATA, {"openRelativePercent": 50}, {}
|
||||
trait.COMMAND_OPEN_CLOSE_RELATIVE, BASIC_DATA, {"openRelativePercent": 50}, {}
|
||||
)
|
||||
assert len(calls_set) == 1
|
||||
assert calls_set[0].data == {
|
||||
@@ -3066,9 +3071,9 @@ async def test_openclose_cover_valve(
|
||||
|
||||
assert len(calls_close) == 0
|
||||
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 0}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 0}, {})
|
||||
await trt.execute(
|
||||
trait.COMMAND_OPENCLOSE_RELATIVE, BASIC_DATA, {"openRelativePercent": 0}, {}
|
||||
trait.COMMAND_OPEN_CLOSE_RELATIVE, BASIC_DATA, {"openRelativePercent": 0}, {}
|
||||
)
|
||||
assert len(calls_set) == 1
|
||||
assert len(calls_close) == 1
|
||||
@@ -3123,7 +3128,7 @@ async def test_openclose_cover_valve_unknown_state(
|
||||
trt.query_attributes()
|
||||
|
||||
calls = async_mock_service(hass, domain, open_service)
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 100}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 100}, {})
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
|
||||
@@ -3177,7 +3182,7 @@ async def test_openclose_cover_valve_assumed_state(
|
||||
assert trt.query_attributes() == {}
|
||||
|
||||
calls = async_mock_service(hass, domain, set_position_service)
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 40}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 40}, {})
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla", cover.ATTR_POSITION: 40}
|
||||
|
||||
@@ -3291,12 +3296,12 @@ async def test_openclose_cover_valve_no_position(
|
||||
assert trt.query_attributes() == {"openPercent": 0}
|
||||
|
||||
calls = async_mock_service(hass, domain, close_service)
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 0}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 0}, {})
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
|
||||
calls = async_mock_service(hass, domain, open_service)
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 100}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 100}, {})
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: f"{domain}.bla"}
|
||||
|
||||
@@ -3304,14 +3309,14 @@ async def test_openclose_cover_valve_no_position(
|
||||
SmartHomeError, match=r"Current position not know for relative command"
|
||||
):
|
||||
await trt.execute(
|
||||
trait.COMMAND_OPENCLOSE_RELATIVE,
|
||||
trait.COMMAND_OPEN_CLOSE_RELATIVE,
|
||||
BASIC_DATA,
|
||||
{"openRelativePercent": 100},
|
||||
{},
|
||||
)
|
||||
|
||||
with pytest.raises(SmartHomeError, match=r"No support for partial open close"):
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, BASIC_DATA, {"openPercent": 50}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, BASIC_DATA, {"openPercent": 50}, {})
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -3354,7 +3359,7 @@ async def test_openclose_cover_secure(hass: HomeAssistant, device_class) -> None
|
||||
|
||||
# No challenge data
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, PIN_DATA, {"openPercent": 50}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, PIN_DATA, {"openPercent": 50}, {})
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
assert err.value.challenge_type == const.CHALLENGE_PIN_NEEDED
|
||||
@@ -3362,20 +3367,20 @@ async def test_openclose_cover_secure(hass: HomeAssistant, device_class) -> None
|
||||
# invalid pin
|
||||
with pytest.raises(error.ChallengeNeeded) as err:
|
||||
await trt.execute(
|
||||
trait.COMMAND_OPENCLOSE, PIN_DATA, {"openPercent": 50}, {"pin": "9999"}
|
||||
trait.COMMAND_OPEN_CLOSE, PIN_DATA, {"openPercent": 50}, {"pin": "9999"}
|
||||
)
|
||||
assert len(calls) == 0
|
||||
assert err.value.code == const.ERR_CHALLENGE_NEEDED
|
||||
assert err.value.challenge_type == const.CHALLENGE_FAILED_PIN_NEEDED
|
||||
|
||||
await trt.execute(
|
||||
trait.COMMAND_OPENCLOSE, PIN_DATA, {"openPercent": 50}, {"pin": "1234"}
|
||||
trait.COMMAND_OPEN_CLOSE, PIN_DATA, {"openPercent": 50}, {"pin": "1234"}
|
||||
)
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {ATTR_ENTITY_ID: "cover.bla", cover.ATTR_POSITION: 50}
|
||||
|
||||
# no challenge on close
|
||||
await trt.execute(trait.COMMAND_OPENCLOSE, PIN_DATA, {"openPercent": 0}, {})
|
||||
await trt.execute(trait.COMMAND_OPEN_CLOSE, PIN_DATA, {"openPercent": 0}, {})
|
||||
assert len(calls_close) == 1
|
||||
assert calls_close[0].data == {ATTR_ENTITY_ID: "cover.bla"}
|
||||
|
||||
@@ -3699,7 +3704,7 @@ async def test_humidity_setting_sensor_data(
|
||||
assert trt.query_attributes() == {}
|
||||
|
||||
with pytest.raises(helpers.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
await trt.execute(trait.COMMAND_ON_OFF, BASIC_DATA, {"on": False}, {})
|
||||
assert err.value.code == const.ERR_NOT_SUPPORTED
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user