Ejemplo n.º 1
0
        private MailStat CreateMailStat(MailProvider mailProvider)
        {
            var mailStat = new MailStat(mailProvider, DateTime.Now);

            _context.MailStats.Add(mailStat);

            return(mailStat);
        }
Ejemplo n.º 2
0
        private async Task <bool> IsThresholdReached(MailStat mailStat, MailProvider mailProvider)
        {
            if (mailStat.Sent >= mailProvider.DailyThreshold)
            {
                return(false);
            }

            await IncrementMailStat(mailStat);

            return(true);
        }
Ejemplo n.º 3
0
        public async Task Mailer_WithReachedThreshold_ThrowsInvalidOperation()
        {
            using (var context = _testContext.CreateNewContext())
            {
                var name         = typeof(MailgunMailer).FullName;
                var mailProvider = new MailProvider(name, 0);
                var mailStat     = new MailStat(mailProvider, DateTime.Now);

                context.MailProviders.Add(mailProvider);
                context.MailStats.Add(mailStat);
                await context.SaveChangesAsync();
            }

            var mailer  = CreateMailer();
            var message = CreateMessage();

            await Assert.ThrowsAsync <InvalidOperationException>(async() => await mailer.Send(message));
        }
Ejemplo n.º 4
0
        public async Task Mailer_WithMailStatOfYesterday_AddNewMailStat()
        {
            using (var context = _testContext.CreateNewContext())
            {
                var name         = typeof(MailgunMailer).FullName;
                var mailProvider = new MailProvider(name, 100);
                var mailStat     = new MailStat(mailProvider, DateTime.Now.AddDays(-1));

                context.MailProviders.Add(mailProvider);
                context.MailStats.Add(mailStat);
                await context.SaveChangesAsync();
            }

            var mailer  = CreateMailer();
            var message = CreateMessage();

            await mailer.Send(message);

            var lastStat = _context.MailStats.FirstOrDefaultAsync(ms => ms.Date == DateTime.Now.Date);

            Assert.NotNull(lastStat);
        }
Ejemplo n.º 5
0
 private async Task IncrementMailStat(MailStat mailStat)
 {
     mailStat.IncrementSent();
     await _context.SaveChangesAsync();
 }