public void Always_Return_True_Previous_Date_Is_Default(SummaryMailIntervalOptions setting) { // ReSharper disable once CollectionNeverUpdated.Local var l = new List <DateTime>(); Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(setting, l.FirstOrDefault())); }
public void Return_Correct_Value_On_Weekly_Setting_Based_On_Current_DayOfWeek() { // this test is quite stupid, because it depends on the day it runs // but the tested logic is trivial, and I put this test here so one day in a code review somebody thinks of a better test if (DateTime.UtcNow.DayOfWeek == DayOfWeek.Sunday) { Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Weekly, DateTime.UtcNow.AddYears(-1))); } else { Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Weekly, DateTime.UtcNow.AddYears(-1))); } }
public static void Main() { var logger = new Logger(); try { logger.Info("Erbsenzaehler.SummaryMails.WebJob v" + typeof(Program).Assembly.GetName().Version + " starting up ..."); // hard-code german culture here, we want our e-mails formatted for german var germanCulture = new CultureInfo("de-DE"); Thread.CurrentThread.CurrentCulture = germanCulture; Thread.CurrentThread.CurrentUICulture = germanCulture; if (!string.IsNullOrEmpty(Config.OneTrueErrorAppKey) && !string.IsNullOrEmpty(Config.OneTrueErrorAppSecret)) { OneTrue.Configuration.Credentials(Config.OneTrueErrorAppKey, Config.OneTrueErrorAppSecret); } using (var db = new Db(Erbsenzaehler.Config.DatabaseConnectionString)) { var usersQuery = db.Users .Where(x => x.SummaryMailInterval != SummaryMailIntervalOptions.Disable) .Select(x => new { User = x, x.Client, LastDate = x.SummaryMailLogs.Select(y => y.Date).OrderByDescending(y => y).FirstOrDefault() }) .ToList(); logger.Trace(usersQuery.Count() + " user(s) found with summary mails enabled."); foreach (var user in usersQuery) { try { if (SummaryMailIntervalService.ShouldReceiveSummaryMail(user.User.SummaryMailInterval, user.LastDate)) { SendMail(db, user.User, user.Client, logger); SaveLog(db, user.User, logger); } else { logger.Info("User '" + user.User.Email + "' already got summary mail."); } } catch (Exception ex) { logger.Error(ex.ToString()); LogException(ex); } } } logger.Info("Everything done. Goodbye."); } catch (Exception ex) { logger.Trace(ex.ToString()); LogException(ex); } }
public void Return_False_On_Monthly_Setting_On_Same_Month() { Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Monthly, new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1))); }
public void Return_True_On_Monthly_Setting_On_Different_Year() { Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Monthly, new DateTime(DateTime.UtcNow.Year - 1, DateTime.UtcNow.Month, DateTime.UtcNow.Day))); }
public void Return_True_On_Monthly_Setting_On_Different_Month() { Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Monthly, DateTime.UtcNow.AddMonths(-1))); }
public void Return_False_On_Weekly_Setting_On_Same_Date() { Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Weekly, DateTime.UtcNow)); }
public void Always_Return_True_When_Previous_Date_Is_Null(SummaryMailIntervalOptions setting) { Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(setting, null)); }
public void Always_Return_False_When_Disable_Setting() { Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Disable, null)); Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Disable, DateTime.MinValue)); }