public Task <CreateEventResult> CreateEvent(CreateEventCriteria criteria) { _createValidator.ValidateAndThrow(criteria); Event newEvent; try { newEvent = EventParsingEngine.Parse(criteria.Query, new TimeSpan(-5, 0, 0)); } catch (Exception ex) { _logger.LogWarning(ex, "Error in creating event with query '{Query}'.", criteria.Query); return(Task.FromResult(new CreateEventResult() { IsSuccessful = false })); } return(Task.FromResult(new CreateEventResult() { Event = newEvent, IsSuccessful = true })); }
public void StringShouldParse(string query, Event expectedEvent) { var result = EventParsingEngine.Parse(query, _tzOffsetInput, _nowInput); Assert.Equal(expectedEvent.Title, result.Title); Assert.Equal(_nowInput, result.CreationDateTime); Assert.Equal(expectedEvent.EventDateTime, result.EventDateTime); }
public void CreatingEventOutsideDaylightSavingShouldWork() { var now = new DateTimeOffset(2020, 10, 30, 16, 0, 0, TimeSpan.Zero); // 12pm EDT var query = "Daylight Saving End Celebration on Sunday 10am"; var expectedEvent = new Event() { Title = "Daylight Saving End Celebration", EventDateTime = now.AddHours(24 * 2 - 1).ToOffset(_tzOffsetInput) // 10am EST (not DST) }; var result = EventParsingEngine.Parse(query, _tzOffsetInput, now); Assert.Equal(expectedEvent.Title, result.Title); Assert.Equal(now, result.CreationDateTime); Assert.Equal(expectedEvent.EventDateTime, result.EventDateTime); }
public void EventAt1pmWhenNowIs2pmShouldSetEventDayAfter() { var now = new DateTimeOffset(2020, 6, 20, 18, 0, 0, TimeSpan.Zero); // 2pm EDT var query = "Event at 1pm."; var expectedEvent = new Event() { Title = "Event", EventDateTime = now.AddHours(24 - 1).ToOffset(_tzOffsetInput) }; var result = EventParsingEngine.Parse(query, _tzOffsetInput, now); Assert.Equal(expectedEvent.Title, result.Title); Assert.Equal(now, result.CreationDateTime); Assert.Equal(expectedEvent.EventDateTime, result.EventDateTime); }
public void NextYearWorks() { var now = new DateTimeOffset(2020, 12, 31, 17, 0, 0, TimeSpan.Zero); var query = "Next year test at 7am."; var expectedEvent = new Event() { Title = "Next year test", EventDateTime = now.AddHours(24 - 5).ToOffset(_tzOffsetInput) }; var result = EventParsingEngine.Parse(query, _tzOffsetInput, now); Assert.Equal(expectedEvent.Title, result.Title); Assert.Equal(now, result.CreationDateTime); Assert.Equal(expectedEvent.EventDateTime, result.EventDateTime); }
public void UnusualTimeZoneShouldStillWork() { // now = June 21 1am local var offset = TimeSpan.FromHours(9); var query = "Crazy offset at 8am tomorrow"; var expectedEvent = new Event() { Title = "Crazy offset", EventDateTime = _nowInput.AddHours(24 + 6).ToOffset(offset) }; var result = EventParsingEngine.Parse(query, offset, _nowInput); Assert.Equal(expectedEvent.Title, result.Title); Assert.Equal(_nowInput, result.CreationDateTime); Assert.Equal(expectedEvent.EventDateTime, result.EventDateTime); }