private MailStat CreateMailStat(MailProvider mailProvider) { var mailStat = new MailStat(mailProvider, DateTime.Now); _context.MailStats.Add(mailStat); return(mailStat); }
private async Task <bool> IsThresholdReached(MailStat mailStat, MailProvider mailProvider) { if (mailStat.Sent >= mailProvider.DailyThreshold) { return(false); } await IncrementMailStat(mailStat); return(true); }
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)); }
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); }
private async Task IncrementMailStat(MailStat mailStat) { mailStat.IncrementSent(); await _context.SaveChangesAsync(); }