コード例 #1
0
        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()));
        }
コード例 #2
0
        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)));
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: saxx/Erbsenzaehler
        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);
            }
        }
コード例 #4
0
 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)));
 }
コード例 #5
0
 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)));
 }
コード例 #6
0
 public void Return_True_On_Monthly_Setting_On_Different_Month()
 {
     Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Monthly, DateTime.UtcNow.AddMonths(-1)));
 }
コード例 #7
0
 public void Return_False_On_Weekly_Setting_On_Same_Date()
 {
     Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Weekly, DateTime.UtcNow));
 }
コード例 #8
0
 public void Always_Return_True_When_Previous_Date_Is_Null(SummaryMailIntervalOptions setting)
 {
     Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(setting, null));
 }
コード例 #9
0
 public void Always_Return_False_When_Disable_Setting()
 {
     Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Disable, null));
     Assert.False(SummaryMailIntervalService.ShouldReceiveSummaryMail(SummaryMailIntervalOptions.Disable, DateTime.MinValue));
 }