125 lines
3.2 KiB
C#
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);
|
|
}
|
|
} |