Files
monorepo/LCU.API.Internal.Dispatcher/LCU.Api.Internal.DispatcherTests/HelperTests/HolidayHelpersTest.cs
T
2026-03-24 15:26:03 -05:00

218 lines
6.4 KiB
C#

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<ArgumentOutOfRangeException>(() => HolidayHelpers.GetLaborDay(0));
}
}