@@ -80,54 +80,63 @@ async def test_service(
8080 mock_manager .send_commands .assert_called_once_with (mock_device .id , [command ])
8181
8282
83+ @patch ("homeassistant.components.tuya.PLATFORMS" , [Platform .ALARM_CONTROL_PANEL ])
8384@pytest .mark .parametrize (
8485 "mock_device_code" ,
8586 ["mal_gyitctrjj1kefxp2" ],
8687)
87- async def test_alarm_state_triggered (
88- hass : HomeAssistant ,
89- mock_manager : Manager ,
90- mock_config_entry : MockConfigEntry ,
91- mock_device : CustomerDevice ,
92- ) -> None :
93- """Test alarm state returns TRIGGERED for non-battery alarms."""
94- entity_id = "alarm_control_panel.multifunction_alarm"
95-
96- # Set up alarm state without battery warning
97- mock_device .status ["master_state" ] = "alarm"
98- mock_device .status ["alarm_msg" ] = (
99- "AFQAZQBzAHQAIABTAGUAbgBzAG8Acg==" # "Test Sensor" in UTF-16BE
100- )
101-
102- await initialize_entry (hass , mock_manager , mock_config_entry , mock_device )
103-
104- state = hass .states .get (entity_id )
105- assert state is not None , f"{ entity_id } does not exist"
106- assert state .state == AlarmControlPanelState .TRIGGERED
107-
108-
10988@pytest .mark .parametrize (
110- "mock_device_code" ,
111- ["mal_gyitctrjj1kefxp2" ],
89+ ("status_updates" , "expected_state" ),
90+ [
91+ (
92+ {"master_mode" : "disarmed" },
93+ AlarmControlPanelState .DISARMED ,
94+ ),
95+ (
96+ {"master_mode" : "arm" },
97+ AlarmControlPanelState .ARMED_AWAY ,
98+ ),
99+ (
100+ {"master_mode" : "home" },
101+ AlarmControlPanelState .ARMED_HOME ,
102+ ),
103+ (
104+ {"master_mode" : "sos" },
105+ AlarmControlPanelState .TRIGGERED ,
106+ ),
107+ (
108+ {
109+ "master_mode" : "home" ,
110+ "master_state" : "alarm" ,
111+ # "Test Sensor" in UTF-16BE
112+ "alarm_msg" : "AFQAZQBzAHQAIABTAGUAbgBzAG8Acg==" ,
113+ },
114+ AlarmControlPanelState .TRIGGERED ,
115+ ),
116+ (
117+ {
118+ "master_mode" : "home" ,
119+ "master_state" : "alarm" ,
120+ # "Sensor Low Battery Test Sensor" in UTF-16BE
121+ "alarm_msg" : "AFMAZQBuAHMAbwByACAATABvAHcAIABCAGEAdAB0AGUAcgB5ACAAVABlAHMAdAAgAFMAZQBuAHMAbwBy" ,
122+ },
123+ AlarmControlPanelState .ARMED_HOME ,
124+ ),
125+ ],
112126)
113- async def test_alarm_state_battery_warning (
127+ async def test_state (
114128 hass : HomeAssistant ,
115129 mock_manager : Manager ,
116130 mock_config_entry : MockConfigEntry ,
117131 mock_device : CustomerDevice ,
132+ status_updates : dict [str , Any ],
133+ expected_state : str ,
118134) -> None :
119- """Test alarm state ignores battery warnings ."""
135+ """Test state."""
120136 entity_id = "alarm_control_panel.multifunction_alarm"
121-
122- # Set up alarm state with battery warning
123- mock_device .status ["master_state" ] = "alarm"
124- mock_device .status ["alarm_msg" ] = (
125- "AFMAZQBuAHMAbwByACAATABvAHcAIABCAGEAdAB0AGUAcgB5ACAAVABlAHMAdAAgAFMAZQBuAHMAbwBy" # "Sensor Low Battery Test Sensor" in UTF-16BE
126- )
127-
137+ mock_device .status .update (status_updates )
128138 await initialize_entry (hass , mock_manager , mock_config_entry , mock_device )
129139
130140 state = hass .states .get (entity_id )
131141 assert state is not None , f"{ entity_id } does not exist"
132- # Should not be triggered for battery warnings
133- assert state .state != AlarmControlPanelState .TRIGGERED
142+ assert state .state == expected_state
0 commit comments