public async Task ProcessMeetingNotificationEntitiesTests_2() { var provider = new DirectSendNotificationProvider(this.Configuration.Object, this.mockedEmailService.Object, this.Logger, this.mockedEmailManager.Object); var entities = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = "notificationId1", RequiredAttendees = "[email protected];[email protected]", OptionalAttendees = "*****@*****.**", RecurrencePattern = NotificationService.Contracts.MeetingRecurrencePattern.Daily, Interval = 2 } }; _ = this.Configuration.Setup(x => x["MailSettings"]).Returns(JsonConvert.SerializeObject(new List <MailSettings> { new MailSettings { ApplicationName = "TestApp", SendForReal = true, ToOverride = "*****@*****.**" } })); provider = new DirectSendNotificationProvider(this.Configuration.Object, this.mockedEmailService.Object, this.Logger, this.mockedEmailManager.Object); await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.Content.Contains("RRULE:FREQ=DAILY;INTERVAL=2;COUNT=1"))), Times.Once); entities = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = "notificationId1", RequiredAttendees = "[email protected];[email protected]", OptionalAttendees = "*****@*****.**", RecurrencePattern = NotificationService.Contracts.MeetingRecurrencePattern.Weekly, Interval = 2, DaysOfWeek = "3,5" } }; await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.Content.Contains("RRULE:FREQ=WEEKLY;BYDAY=WE,FR;INTERVAL=2;COUNT=1"))), Times.Once); entities = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = "notificationId1", RequiredAttendees = "[email protected];[email protected]", OptionalAttendees = "*****@*****.**", RecurrencePattern = NotificationService.Contracts.MeetingRecurrencePattern.Monthly, Interval = 3, DaysOfWeek = "3,5", DayOfWeekByMonth = "4" } }; await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.Content.Contains("RRULE:FREQ=MONTHLY;BYSETPOS=4;BYDAY=WE,FR;INTERVAL=3;COUNT=1"))), Times.Once); entities = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = "notificationId1", RequiredAttendees = "[email protected];[email protected]", OptionalAttendees = "*****@*****.**", RecurrencePattern = NotificationService.Contracts.MeetingRecurrencePattern.Yearly, Interval = 2, DaysOfWeek = "3,5", DayOfWeekByMonth = "4", SequenceNumber = 1, IsPrivate = true, ReminderMinutesBeforeStart = "15" } }; await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.Content.Contains("RRULE:FREQ=YEARLY;BYDAY=WE,FR;BYSETPOS=4;BYMONTH=0;COUNT=1") && q.Content.Contains("TRIGGER:-P15M"))), Times.Once); }
public async Task ProcessMeetingNotificationEntitiesTests() { var provider = new DirectSendNotificationProvider(this.Configuration.Object, this.mockedEmailService.Object, this.Logger, this.mockedEmailManager.Object); var entities = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = "notificationId1", RequiredAttendees = "[email protected];[email protected]", OptionalAttendees = "*****@*****.**" } }; await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.CcAddresses == null)), Times.Once); _ = this.Configuration.Setup(x => x["MailSettings"]).Returns(JsonConvert.SerializeObject(new List <MailSettings> { new MailSettings { ApplicationName = "TestApp", SendForReal = true, ToOverride = "*****@*****.**" } })); provider = new DirectSendNotificationProvider(this.Configuration.Object, this.mockedEmailService.Object, this.Logger, this.mockedEmailManager.Object); await provider.ProcessMeetingNotificationEntities("TestApp", entities); this.mockedEmailService.Verify(x => x.SendMeetingInviteAsync(It.Is <EmailMessage>(q => q.ToAddresses.Any(r => r.Address == "*****@*****.**") && q.ToAddresses.Any(r => r.Address == "*****@*****.**"))), Times.Once); }