using LCU.Api.Internal.DispatcherSharedLib.Utilities; using NCrontab; namespace LCU.Api.Common.NotificationsTests.HelperTests; public class CronHelpersTest { public CronHelpersTest() { } [Fact] public void SetCronSchedule_Ok() { var job = new Job() { CronSchedule = "* * * * 1-5" }; var DefaultCleanUpJobCronPattern = "* * * * 1-7"; CronHelpers.SetCronSchedule(job.CronSchedule, DefaultCleanUpJobCronPattern); // Assert Assert.NotNull(job.CronSchedule); Assert.Equal("* * * * 1-5", job.CronSchedule); } [Fact] public void SetCronSchedule_Error() { var job = new Job() { CronSchedule = "DDDDDDD" }; var DefaultCleanUpJobCronPattern = "DDDDDDD"; Assert.Throws(() => CronHelpers.SetCronSchedule(job.CronSchedule, DefaultCleanUpJobCronPattern)); } [Fact] public void SetCronSchedule_DefaultSet() { var job = new Job() { CronSchedule = "FFFFFFF" }; var DefaultCleanUpJobCronPattern = "0,15,30,45 7-17 * * 1-5"; var result = CronHelpers.SetCronSchedule(job.CronSchedule, DefaultCleanUpJobCronPattern); Assert.NotNull(result); Assert.Equal(DefaultCleanUpJobCronPattern, result.ToString()); } [Fact] public void SetNextScheduledRunTime_Ok() { var job = new Job() { CronSchedule = "0 0 1-30 1 *" }; CrontabSchedule.Parse(job.CronSchedule); CronHelpers.SetNextScheduledRunTime(ref job); // Assert Assert.NotNull(job.NextRunTime); } [Fact] public void SetNextScheduledRunTimeNull_Ok() { var job = new Job() { CronSchedule = "0 0 1-30 1 *" }; var DefaultCleanUpJobCronPattern = "* 22 * * *"; CronHelpers.SetCronSchedule(job.CronSchedule, DefaultCleanUpJobCronPattern); // Assert Assert.Null(job.NextRunTime); } [Fact(Skip="Not Holiday")] public void SetNextScheduledRunTime_NoSKipHoliday() { var job = new Job() { CronSchedule = "0 0 1-30 1 *" }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(nextRunTime); CronHelpers.SetNextScheduledRunTime(ref job); // Assert Assert.NotNull(job.NextRunTime); Assert.NotEqual(nextRunTimeAfterHoliday, job.NextRunTime); } [Fact] public void SetNextScheduledRunTime_SKipHoliday() { var job = new Job() { CronSchedule = "0 0 1-30 1 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(nextRunTime); CronHelpers.SetNextScheduledRunTime(ref job); // Assert Assert.NotNull(job.NextRunTime); Assert.Equal(nextRunTimeAfterHoliday, job.NextRunTime); } }