diff --git a/homeassistant/components/google/calendar.py b/homeassistant/components/google/calendar.py index d04d913ae67..1174868bb78 100644 --- a/homeassistant/components/google/calendar.py +++ b/homeassistant/components/google/calendar.py @@ -183,7 +183,9 @@ class GoogleCalendarEventDevice(CalendarEventDevice): valid_items = filter(self._event_filter, items) self._event = copy.deepcopy(next(valid_items, None)) if self._event: - (summary, offset) = extract_offset(self._event["summary"], self._offset) + (summary, offset) = extract_offset( + self._event.get("summary", ""), self._offset + ) self._event["summary"] = summary self._offset_reached = is_offset_reached( get_date(self._event["start"]), offset diff --git a/tests/components/google/test_calendar.py b/tests/components/google/test_calendar.py index 53e7308bc6f..a5aca8a27d4 100644 --- a/tests/components/google/test_calendar.py +++ b/tests/components/google/test_calendar.py @@ -272,6 +272,35 @@ async def test_all_day_offset_event(hass, mock_events_list_items, component_setu } +async def test_missing_summary(hass, mock_events_list_items, component_setup): + """Test that we can create an event trigger on device.""" + start_event = dt_util.now() + datetime.timedelta(minutes=14) + end_event = start_event + datetime.timedelta(minutes=60) + event = { + **TEST_EVENT, + "start": {"dateTime": start_event.isoformat()}, + "end": {"dateTime": end_event.isoformat()}, + } + del event["summary"] + mock_events_list_items([event]) + + assert await component_setup() + + state = hass.states.get(TEST_ENTITY) + assert state.name == TEST_ENTITY_NAME + assert state.state == STATE_OFF + assert dict(state.attributes) == { + "friendly_name": TEST_ENTITY_NAME, + "message": "", + "all_day": False, + "offset_reached": False, + "start_time": start_event.strftime(DATE_STR_FORMAT), + "end_time": end_event.strftime(DATE_STR_FORMAT), + "location": event["location"], + "description": event["description"], + } + + async def test_update_error( hass, calendar_resource, component_setup, test_api_calendar ):