public MeetingNotificationBackgroundService(
     IServiceProvider services,
     IOptions <MeetingNotificationConfiguration> notificationConfiguration
     )
 {
     _services = services;
     _meetingNotificationConfiguration = notificationConfiguration.Value;
 }
示例#2
0
        public async void NotifyParticipantsMeeting_NotSendEmailWhenStartDateIsNotAtThePeriod()
        {
            var email                = "*****@*****.**";
            var idMeeting            = 1;
            var idParticipant        = 1;
            var startDateTimeMeeting = new DateTime(2020, 06, 12, 22, 44, 00);
            var now = new DateTime(2020, 06, 12, 21, 30, 00);

            _context.Meetings.Add(
                new Meeting
            {
                Id   = idMeeting,
                Name = "meeting",
                StartDateTimeMeeting = startDateTimeMeeting,
                EndDateTimeMeeting   = new DateTime(2020, 06, 12, 23, 30, 00),
                IsNotified           = false
            }
                );

            _context.Participants.Add(
                new Participant
            {
                Id    = idParticipant,
                Name  = "Sasha",
                Email = email
            }
                );

            _context.MeetingParticipants.Add(
                new MeetingParticipant()
            {
                MeetingId     = idMeeting,
                ParticipantId = idParticipant
            }
                );

            _context.SaveChanges();

            _dateTimeProviderMock.Setup(x => x.Now()).Returns(now);

            var meetingNotificationConfiguration = new MeetingNotificationConfiguration()
            {
                MeetingDelayMinutes = 15
            };

            var meeting = await _context.Meetings.FindAsync(idMeeting);

            var meetingNotificationService = new MeetingNotificationService(
                _context, new OptionsWrapper <MeetingNotificationConfiguration>(meetingNotificationConfiguration),
                _emailServiceMock.Object, _dateTimeProviderMock.Object
                );

            await meetingNotificationService.NotifyParticipantsMeeting();

            _emailServiceMock.Verify(send => send.SendEmailAsync(email, meeting), Times.Never);

            Assert.False(meeting.IsNotified);
        }
示例#3
0
 public MeetingNotificationService(
     ApplicationContext context,
     IOptions <MeetingNotificationConfiguration> notificationConfiguration,
     IEmailService emailService,
     IDateTimeProvider dateTimeProvider
     )
 {
     _context = context;
     _meetingNotificationConfiguration = notificationConfiguration.Value;
     _emailService     = emailService;
     _dateTimeProvider = dateTimeProvider;
 }