mirror of
https://github.com/Cleanuparr/Cleanuparr.git
synced 2026-01-22 21:01:11 -05:00
184 lines
4.5 KiB
C#
184 lines
4.5 KiB
C#
using Cleanuparr.Infrastructure.Models;
|
|
using Cleanuparr.Infrastructure.Utilities;
|
|
using Shouldly;
|
|
using Xunit;
|
|
|
|
namespace Cleanuparr.Infrastructure.Tests.Utilities;
|
|
|
|
public class ScheduleOptionsTests
|
|
{
|
|
[Fact]
|
|
public void GetValidValues_Seconds_Returns30()
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.GetValidValues(ScheduleUnit.Seconds);
|
|
|
|
// Assert
|
|
result.ShouldBe(new[] { 30 });
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValidValues_Minutes_ReturnsDivisorsOf60()
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.GetValidValues(ScheduleUnit.Minutes);
|
|
|
|
// Assert
|
|
result.ShouldBe(new[] { 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30 });
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValidValues_Hours_ReturnsDivisorsOf24()
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.GetValidValues(ScheduleUnit.Hours);
|
|
|
|
// Assert
|
|
result.ShouldBe(new[] { 1, 2, 3, 4, 6, 8, 12 });
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValidValue_Seconds_30_ReturnsTrue()
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Seconds, 30);
|
|
|
|
// Assert
|
|
result.ShouldBeTrue();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(1)]
|
|
[InlineData(15)]
|
|
[InlineData(45)]
|
|
[InlineData(60)]
|
|
public void IsValidValue_Seconds_InvalidValues_ReturnsFalse(int value)
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Seconds, value);
|
|
|
|
// Assert
|
|
result.ShouldBeFalse();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(7)]
|
|
[InlineData(8)]
|
|
[InlineData(9)]
|
|
[InlineData(11)]
|
|
[InlineData(45)]
|
|
[InlineData(60)]
|
|
public void IsValidValue_Minutes_InvalidValues_ReturnsFalse(int value)
|
|
{
|
|
// 7 doesn't divide 60 evenly, and other values are not in the valid list
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Minutes, value);
|
|
|
|
// Assert
|
|
result.ShouldBeFalse();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(5)]
|
|
[InlineData(7)]
|
|
[InlineData(9)]
|
|
[InlineData(10)]
|
|
[InlineData(11)]
|
|
[InlineData(24)]
|
|
public void IsValidValue_Hours_InvalidValues_ReturnsFalse(int value)
|
|
{
|
|
// These don't divide 24 evenly or aren't in valid list
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Hours, value);
|
|
|
|
// Assert
|
|
result.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValidValues_InvalidUnit_ThrowsArgumentOutOfRangeException()
|
|
{
|
|
// Arrange
|
|
var invalidUnit = (ScheduleUnit)999;
|
|
|
|
// Act & Assert
|
|
Should.Throw<ArgumentOutOfRangeException>(() => ScheduleOptions.GetValidValues(invalidUnit));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValidValue_InvalidUnit_ThrowsArgumentOutOfRangeException()
|
|
{
|
|
// Arrange
|
|
var invalidUnit = (ScheduleUnit)999;
|
|
|
|
// Act & Assert
|
|
Should.Throw<ArgumentOutOfRangeException>(() => ScheduleOptions.IsValidValue(invalidUnit, 1));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(1)]
|
|
[InlineData(2)]
|
|
[InlineData(3)]
|
|
[InlineData(4)]
|
|
[InlineData(5)]
|
|
[InlineData(6)]
|
|
[InlineData(10)]
|
|
[InlineData(12)]
|
|
[InlineData(15)]
|
|
[InlineData(20)]
|
|
[InlineData(30)]
|
|
public void IsValidValue_Minutes_AllValidValues_ReturnsTrue(int value)
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Minutes, value);
|
|
|
|
// Assert
|
|
result.ShouldBeTrue();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(1)]
|
|
[InlineData(2)]
|
|
[InlineData(3)]
|
|
[InlineData(4)]
|
|
[InlineData(6)]
|
|
[InlineData(8)]
|
|
[InlineData(12)]
|
|
public void IsValidValue_Hours_AllValidValues_ReturnsTrue(int value)
|
|
{
|
|
// Act
|
|
var result = ScheduleOptions.IsValidValue(ScheduleUnit.Hours, value);
|
|
|
|
// Assert
|
|
result.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidSecondValues_ContainsOnly30()
|
|
{
|
|
// Assert
|
|
ScheduleOptions.ValidSecondValues.Length.ShouldBe(1);
|
|
ScheduleOptions.ValidSecondValues.ShouldContain(30);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidMinuteValues_AllDivide60Evenly()
|
|
{
|
|
// Assert - all valid minute values should divide 60 evenly
|
|
foreach (var value in ScheduleOptions.ValidMinuteValues)
|
|
{
|
|
(60 % value).ShouldBe(0, $"Value {value} does not divide 60 evenly");
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidHourValues_AllDivide24Evenly()
|
|
{
|
|
// Assert - all valid hour values should divide 24 evenly
|
|
foreach (var value in ScheduleOptions.ValidHourValues)
|
|
{
|
|
(24 % value).ShouldBe(0, $"Value {value} does not divide 24 evenly");
|
|
}
|
|
}
|
|
}
|