Beispiel #1
0
    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
        }));
    }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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);
    }