using LCU.Api.Internal.DispatcherSharedLib.Utilities; using NCrontab; using System; namespace LCU.Api.Common.NotificationsTests.HelperTests; public class HolidayHelpersTest { public HolidayHelpersTest() { } [Fact(Skip = "Not Holiday")] public void HandleHolidaysSkipHolidayFalse_Ok() { 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); Assert.NotEqual(nextRunTimeAfterHoliday, job.NextRunTime); } [Fact] public void HandleHolidaysSkipHolidayTrue_Ok() { 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); Assert.Equal(nextRunTimeAfterHoliday, job.NextRunTime); } [Fact] public void HandleHolidaysSkipIndependenceDayTrue_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 4-31 7 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); CronHelpers.SetNextScheduledRunTime(ref job); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(nextRunTime); // Assert Assert.NotNull(job); Assert.Equal(nextRunTimeAfterHoliday, job.NextRunTime); } [Fact] public void HandleHolidaysGetChristmas_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-30 12 *" }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); var result = HolidayHelpers.GetChristmasDay(nextRunTime.Year); DateTime holidayValue = new DateTime(DateTime.Now.Year, 12, 25); // Assert Assert.NotNull(result.ToString()); Assert.Equal(holidayValue.ToString(), result.ToString()); } [Fact] public void HandleHolidaysGetNewYearsDay_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-30 12 *" }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); var result = HolidayHelpers.GetNewYearsDay(nextRunTime.Year); DateTime holidayValue = new DateTime(DateTime.Now.Year, 1, 1); // Assert Assert.NotNull(result.ToString()); Assert.Equal(holidayValue.ToString(), result.ToString()); } [Fact] public void HandleHolidaysGetIndependenceDay_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-30 12 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTime = schedule.GetNextOccurrence(DateTime.Now); var result = HolidayHelpers.GetIndependenceDay(nextRunTime.Year); DateTime holidayValue = new DateTime(DateTime.Now.Year, 7, 4); // Assert Assert.NotNull(result.ToString()); Assert.Equal(holidayValue.ToString(), result.ToString()); } [Fact] public void HandleHolidaysGetMemorialDay_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-31 5 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTimeYear = schedule.GetNextOccurrence(DateTime.Now); CronHelpers.SetNextScheduledRunTime(ref job); var result = HolidayHelpers.GetMemorialDay(nextRunTimeYear.Year); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(result); // Assert Assert.NotNull(result.ToString()); Assert.Equal(nextRunTimeAfterHoliday.ToString(), result.AddDays(1).ToString()); } [Fact] public void HandleHolidaysGetThanksgivingDay_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-30 11 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTimeYear = schedule.GetNextOccurrence(DateTime.Now); CronHelpers.SetNextScheduledRunTime(ref job); var result = HolidayHelpers.GetThanksgivingDay(nextRunTimeYear.Year); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(result); // Assert Assert.NotNull(result.ToString()); Assert.Equal(nextRunTimeAfterHoliday.ToString(), result.AddDays(1).ToString()); } [Fact] public void HandleHolidaysGetLaborDay_Ok() { // Arrange var job = new Job() { CronSchedule = "0 0 1-30 9 *", SkipHolidays = true }; CrontabSchedule schedule = CrontabSchedule.Parse(job.CronSchedule); var nextRunTimeYear = schedule.GetNextOccurrence(DateTime.Now); CronHelpers.SetNextScheduledRunTime(ref job); var result = HolidayHelpers.GetLaborDay(nextRunTimeYear.Year); var nextRunTimeAfterHoliday = HolidayHelpers.HandleHolidays(result); // Assert Assert.NotNull(result.ToString()); Assert.Equal(nextRunTimeAfterHoliday.ToString(), result.AddDays(1).ToString()); } [Fact] public void HandleHolidaysNull_Ok() { // Arrange DateTime dateTest = new DateTime(); //min date is 01-01-0001 var nextRunTime = HolidayHelpers.GetLaborDay(dateTest.Year); // Assert Assert.NotNull(nextRunTime.ToString()); } [Fact] public void HandleHolidaysGetSpecificHolidayNoYear_Error() { // Assert Assert.Throws(() => HolidayHelpers.GetLaborDay(0)); } }