public async Task WhenAskedForMeeting_ShouldUseConnector(string phrase, string mail) { var info = new TextDeconstructionInformation("What is my next meeting", null); var chatEvent = GetChatEvent(phrase, mail); _connector.GetNextMeetingAsync(mail).Returns((Event)null); var result = await _processor.ProcessCommandAsync(info, chatEvent, null, null); _connector.Received().GetNextMeetingAsync(mail); Assert.AreEqual(result.Text, "Can not find your next event! You may have no events or the service user account do not see your calendar."); }
/// <inheritdoc/> public async ValueTask <ChatEventResult> ProcessCommandAsync(TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IReadOnlyDictionary <string, string> settings) { Contract.Ensures(info != null, "Text deconstruction information is required!"); var sender = originalChatEvent?.Message.Sender ?? throw new ArgumentNullException(nameof(originalChatEvent)); var item = await _googleCalendarConnector .GetNextMeetingAsync(sender.Email) .ConfigureAwait(false); if (item?.Summary == null) { return(new ChatEventResult("Can not find your next event! You may have no events or the service user account do not see your calendar.")); } var link = item.ConferenceData?.EntryPoints.FirstOrDefault(); var startDate = item.Start.DateTime.HasValue ? TimeZoneInfo.ConvertTime(item.Start.DateTime.Value, _currentTimeZoneFactory()).ToString("HH:mm", CultureInfo.InvariantCulture) : null; var keyValue = new KeyValue { Content = item.Summary, ContentMultiline = false, BottomLabel = startDate, Icon = "INVITE", Button = link == null ? null : ChatEventFactory.CreateTextButton("JOIN", link.Uri) }; var card = ChatEventFactory.CreateCard(keyValue); return(new ChatEventResult(card)); }
public async Task WhenAskedForMeeting_ShouldUseConnector(string phrase, string mail) { var info = new TextDeconstructionInformation("What is my next meeting", null, SentenceTypes.Question); var chatEvent = GetChatEvent(phrase, mail); _connector.GetNextMeetingAsync(mail).Returns((Event)null); var result = await _processor.ProcessCommandAsync(info, chatEvent, null); _connector.Received().GetNextMeetingAsync(mail); }