"""The tests for the persistent notification component triggers.""" from typing import Any import homeassistant.components.persistent_notification as pn from homeassistant.components.persistent_notification import trigger from homeassistant.core import Context, HomeAssistant, callback async def test_automation_with_pn_trigger(hass: HomeAssistant) -> None: """Test automation with a persistent_notification trigger.""" result_any = [] result_dismissed = [] result_id = [] trigger_info = {"trigger_data": {}} @callback def trigger_callback_any( run_variables: dict[str, Any], context: Context | None = None ) -> None: result_any.append(run_variables) await trigger.async_attach_trigger( hass, {"platform": "persistent_notification"}, trigger_callback_any, trigger_info, ) @callback def trigger_callback_dismissed( run_variables: dict[str, Any], context: Context | None = None ) -> None: result_dismissed.append(run_variables) await trigger.async_attach_trigger( hass, {"platform": "persistent_notification", "update_type": "removed"}, trigger_callback_dismissed, trigger_info, ) @callback def trigger_callback_id( run_variables: dict[str, Any], context: Context | None = None ) -> None: result_id.append(run_variables) await trigger.async_attach_trigger( hass, {"platform": "persistent_notification", "notification_id": "42"}, trigger_callback_id, trigger_info, ) await hass.services.async_call( pn.DOMAIN, "create", {"notification_id": "test_notification", "message": "test"}, blocking=True, ) result = result_any[0].get("trigger") assert result["platform"] == "persistent_notification" assert result["update_type"] == pn.UpdateType.ADDED assert result["notification"]["notification_id"] == "test_notification" assert result["notification"]["message"] == "test" assert len(result_dismissed) == 0 assert len(result_id) == 0 await hass.services.async_call( pn.DOMAIN, "dismiss", {"notification_id": "test_notification"}, blocking=True, ) result = result_any[1].get("trigger") assert result["platform"] == "persistent_notification" assert result["update_type"] == pn.UpdateType.REMOVED assert result["notification"]["notification_id"] == "test_notification" assert result["notification"]["message"] == "test" assert result_any[1] == result_dismissed[0] assert len(result_id) == 0 await hass.services.async_call( pn.DOMAIN, "create", {"notification_id": "42", "message": "Forty Two"}, blocking=True, ) result = result_any[2].get("trigger") assert result["platform"] == "persistent_notification" assert result["update_type"] == pn.UpdateType.ADDED assert result["notification"]["notification_id"] == "42" assert result["notification"]["message"] == "Forty Two" assert result_any[2] == result_id[0]