mirror of
https://github.com/home-assistant/core.git
synced 2025-11-13 13:00:11 +00:00
Implement new state property for alarm_control_panel which is using an enum (#126283)
* Alarm state from enum * Fixes * Set final * Fix rebase * Test const * Fix breaking version * Fix other for alarm_control_panel * Fix integrations * More * More * More * More * Fix zha * Replace _attr_state * Fix alarm_control_panel * Fix tests * Fixes * Mods * Change some * More * More * More * Tests * Last tests * Return enum * Fix zha * Remove not needed check * Fix wording * Fix homekit * Mod prometheus * Fix mypy * Fix homekit * Fix ifttt
This commit is contained in:
@@ -9,7 +9,10 @@ from unittest.mock import patch
|
||||
import pytest
|
||||
|
||||
from homeassistant.components import alarm_control_panel, mqtt
|
||||
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntityFeature
|
||||
from homeassistant.components.alarm_control_panel import (
|
||||
AlarmControlPanelEntityFeature,
|
||||
AlarmControlPanelState,
|
||||
)
|
||||
from homeassistant.components.mqtt.alarm_control_panel import (
|
||||
MQTT_ALARM_ATTRIBUTES_BLOCKED,
|
||||
)
|
||||
@@ -25,16 +28,6 @@ from homeassistant.const import (
|
||||
SERVICE_ALARM_DISARM,
|
||||
SERVICE_ALARM_TRIGGER,
|
||||
SERVICE_RELOAD,
|
||||
STATE_ALARM_ARMED_AWAY,
|
||||
STATE_ALARM_ARMED_CUSTOM_BYPASS,
|
||||
STATE_ALARM_ARMED_HOME,
|
||||
STATE_ALARM_ARMED_NIGHT,
|
||||
STATE_ALARM_ARMED_VACATION,
|
||||
STATE_ALARM_ARMING,
|
||||
STATE_ALARM_DISARMED,
|
||||
STATE_ALARM_DISARMING,
|
||||
STATE_ALARM_PENDING,
|
||||
STATE_ALARM_TRIGGERED,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
@@ -213,23 +206,23 @@ async def test_update_state_via_state_topic(
|
||||
assert hass.states.get(entity_id).state == STATE_UNKNOWN
|
||||
|
||||
for state in (
|
||||
STATE_ALARM_DISARMED,
|
||||
STATE_ALARM_ARMED_HOME,
|
||||
STATE_ALARM_ARMED_AWAY,
|
||||
STATE_ALARM_ARMED_NIGHT,
|
||||
STATE_ALARM_ARMED_VACATION,
|
||||
STATE_ALARM_ARMED_CUSTOM_BYPASS,
|
||||
STATE_ALARM_PENDING,
|
||||
STATE_ALARM_ARMING,
|
||||
STATE_ALARM_DISARMING,
|
||||
STATE_ALARM_TRIGGERED,
|
||||
AlarmControlPanelState.DISARMED,
|
||||
AlarmControlPanelState.ARMED_HOME,
|
||||
AlarmControlPanelState.ARMED_AWAY,
|
||||
AlarmControlPanelState.ARMED_NIGHT,
|
||||
AlarmControlPanelState.ARMED_VACATION,
|
||||
AlarmControlPanelState.ARMED_CUSTOM_BYPASS,
|
||||
AlarmControlPanelState.PENDING,
|
||||
AlarmControlPanelState.ARMING,
|
||||
AlarmControlPanelState.DISARMING,
|
||||
AlarmControlPanelState.TRIGGERED,
|
||||
):
|
||||
async_fire_mqtt_message(hass, "alarm/state", state)
|
||||
assert hass.states.get(entity_id).state == state
|
||||
|
||||
# Ignore empty payload (last state is STATE_ALARM_TRIGGERED)
|
||||
# Ignore empty payload (last state is AlarmControlPanelState.TRIGGERED)
|
||||
async_fire_mqtt_message(hass, "alarm/state", "")
|
||||
assert hass.states.get(entity_id).state == STATE_ALARM_TRIGGERED
|
||||
assert hass.states.get(entity_id).state == AlarmControlPanelState.TRIGGERED
|
||||
|
||||
# Reset state on `None` payload
|
||||
async_fire_mqtt_message(hass, "alarm/state", "None")
|
||||
@@ -769,7 +762,7 @@ async def test_update_state_via_state_topic_template(
|
||||
async_fire_mqtt_message(hass, "test-topic", "100")
|
||||
|
||||
state = hass.states.get("alarm_control_panel.test")
|
||||
assert state.state == STATE_ALARM_ARMED_AWAY
|
||||
assert state.state == AlarmControlPanelState.ARMED_AWAY
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -1306,7 +1299,11 @@ async def test_entity_name(
|
||||
@pytest.mark.parametrize(
|
||||
("topic", "payload1", "payload2"),
|
||||
[
|
||||
("test-topic", STATE_ALARM_DISARMED, STATE_ALARM_ARMED_HOME),
|
||||
(
|
||||
"test-topic",
|
||||
AlarmControlPanelState.DISARMED,
|
||||
AlarmControlPanelState.ARMED_HOME,
|
||||
),
|
||||
("availability-topic", "online", "offline"),
|
||||
("json-attributes-topic", '{"attr1": "val1"}', '{"attr1": "val2"}'),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user