Files
2026-03-24 15:26:03 -05:00

125 lines
3.2 KiB
C#

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<NCrontab.CrontabException>(() => 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);
}
}