mirror of
https://github.com/Cleanuparr/Cleanuparr.git
synced 2026-05-09 15:24:00 -04:00
Fix queue rules upper bound to never allow 0 (#543)
This commit is contained in:
@@ -20,7 +20,7 @@ public abstract record QueueRuleDto
|
||||
[Range(0, 100, ErrorMessage = "Minimum completion percentage must be between 0 and 100")]
|
||||
public ushort MinCompletionPercentage { get; set; }
|
||||
|
||||
[Range(0, 100, ErrorMessage = "Maximum completion percentage must be between 0 and 100")]
|
||||
[Range(1, 100, ErrorMessage = "Maximum completion percentage must be between 1 and 100")]
|
||||
public ushort MaxCompletionPercentage { get; set; }
|
||||
|
||||
public bool DeletePrivateTorrentsFromClient { get; set; } = false;
|
||||
|
||||
@@ -188,11 +188,26 @@ public sealed class QueueRuleTests
|
||||
};
|
||||
|
||||
var exception = Should.Throw<ValidationException>(() => rule.Validate());
|
||||
exception.Message.ShouldBe("Maximum completion percentage must be between 0 and 100");
|
||||
exception.Message.ShouldBe("Maximum completion percentage must be between 1 and 100");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Validate_WithZeroMaxCompletionPercentage_ThrowsValidationException()
|
||||
{
|
||||
var rule = new StallRule
|
||||
{
|
||||
Name = "test-rule",
|
||||
MaxStrikes = 3,
|
||||
MinCompletionPercentage = 0,
|
||||
MaxCompletionPercentage = 0
|
||||
};
|
||||
|
||||
var exception = Should.Throw<ValidationException>(() => rule.Validate());
|
||||
exception.Message.ShouldBe("Maximum completion percentage must be greater than 0");
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData((ushort)0)]
|
||||
[InlineData((ushort)1)]
|
||||
[InlineData((ushort)50)]
|
||||
[InlineData((ushort)100)]
|
||||
public void Validate_WithValidMaxCompletionPercentage_DoesNotThrow(ushort maxCompletionPercentage)
|
||||
|
||||
@@ -24,8 +24,8 @@ public abstract record QueueRule : IConfig, IQueueRule
|
||||
public TorrentPrivacyType PrivacyType { get; init; } = TorrentPrivacyType.Public;
|
||||
|
||||
public ushort MinCompletionPercentage { get; init; } = 0;
|
||||
|
||||
public ushort MaxCompletionPercentage { get; init; }
|
||||
|
||||
public ushort MaxCompletionPercentage { get; init; } = 100;
|
||||
|
||||
public bool DeletePrivateTorrentsFromClient { get; init; } = false;
|
||||
|
||||
@@ -48,9 +48,14 @@ public abstract record QueueRule : IConfig, IQueueRule
|
||||
throw new Cleanuparr.Domain.Exceptions.ValidationException("Minimum completion percentage must be between 0 and 100");
|
||||
}
|
||||
|
||||
if (MaxCompletionPercentage == 0)
|
||||
{
|
||||
throw new Cleanuparr.Domain.Exceptions.ValidationException("Maximum completion percentage must be greater than 0");
|
||||
}
|
||||
|
||||
if (MaxCompletionPercentage > 100)
|
||||
{
|
||||
throw new Cleanuparr.Domain.Exceptions.ValidationException("Maximum completion percentage must be between 0 and 100");
|
||||
throw new Cleanuparr.Domain.Exceptions.ValidationException("Maximum completion percentage must be between 1 and 100");
|
||||
}
|
||||
|
||||
if (MaxCompletionPercentage < MinCompletionPercentage)
|
||||
|
||||
Reference in New Issue
Block a user