From 36f52a26f625a7d168ed69b1bf844de27a30927c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 10 Sep 2020 11:25:56 +0200 Subject: [PATCH] Fix event trigger (#39884) Co-authored-by: Franck Nijhof --- .../components/homeassistant/triggers/event.py | 14 +++++++++----- .../homeassistant/triggers/test_event.py | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/homeassistant/triggers/event.py b/homeassistant/components/homeassistant/triggers/event.py index 8fa9207c3b0..800d6bb5f77 100644 --- a/homeassistant/components/homeassistant/triggers/event.py +++ b/homeassistant/components/homeassistant/triggers/event.py @@ -28,11 +28,15 @@ async def async_attach_trigger( ): """Listen for events based on configuration.""" event_type = config.get(CONF_EVENT_TYPE) - event_data_schema = ( - vol.Schema(config.get(CONF_EVENT_DATA), extra=vol.ALLOW_EXTRA) - if config.get(CONF_EVENT_DATA) - else None - ) + event_data_schema = None + if config.get(CONF_EVENT_DATA): + event_data_schema = vol.Schema( + { + vol.Required(key): value + for key, value in config.get(CONF_EVENT_DATA).items() + }, + extra=vol.ALLOW_EXTRA, + ) @callback def handle_event(event): diff --git a/tests/components/homeassistant/triggers/test_event.py b/tests/components/homeassistant/triggers/test_event.py index cc9aecfdac4..84b7e725f0a 100644 --- a/tests/components/homeassistant/triggers/test_event.py +++ b/tests/components/homeassistant/triggers/test_event.py @@ -84,17 +84,27 @@ async def test_if_fires_on_event_with_data(hass, calls): "trigger": { "platform": "event", "event_type": "test_event", - "event_data": {"some_attr": "some_value"}, + "event_data": { + "some_attr": "some_value", + "second_attr": "second_value", + }, }, "action": {"service": "test.automation"}, } }, ) - hass.bus.async_fire("test_event", {"some_attr": "some_value", "another": "value"}) + hass.bus.async_fire( + "test_event", + {"some_attr": "some_value", "another": "value", "second_attr": "second_value"}, + ) await hass.async_block_till_done() assert len(calls) == 1 + hass.bus.async_fire("test_event", {"some_attr": "some_value", "another": "value"}) + await hass.async_block_till_done() + assert len(calls) == 1 # No new call + async def test_if_fires_on_event_with_empty_data_config(hass, calls): """Test the firing of events with empty data config.