From 954903812197d0fad3bc091e6e469342680f7776 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 6 Sep 2024 20:35:19 -0700 Subject: [PATCH] Convert QualityDefinitionLimits to static --- .../QualityDefinitionResourceValidatorTest.cs | 23 +++++++------------ .../Qualities/QualityDefinitionLimits.cs | 10 +++----- .../Qualities/QualityDefinitionService.cs | 6 ----- .../Qualities/QualityDefinitionController.cs | 13 ++++------- .../QualityDefinitionLimitsResource.cs | 10 ++++++++ .../QualityDefinitionResourceValidator.cs | 12 +++++----- 6 files changed, 31 insertions(+), 43 deletions(-) create mode 100644 src/Sonarr.Api.V3/Qualities/QualityDefinitionLimitsResource.cs diff --git a/src/NzbDrone.Api.Test/v3/Qualities/QualityDefinitionResourceValidatorTest.cs b/src/NzbDrone.Api.Test/v3/Qualities/QualityDefinitionResourceValidatorTest.cs index f01d7f512..ed3fe50b9 100644 --- a/src/NzbDrone.Api.Test/v3/Qualities/QualityDefinitionResourceValidatorTest.cs +++ b/src/NzbDrone.Api.Test/v3/Qualities/QualityDefinitionResourceValidatorTest.cs @@ -1,4 +1,4 @@ -using FluentValidation.TestHelper; +using FluentValidation.TestHelper; using NUnit.Framework; using NzbDrone.Core.Qualities; using Sonarr.Api.V3.Qualities; @@ -8,19 +8,12 @@ namespace NzbDrone.Api.Test.v3.Qualities; [Parallelizable(ParallelScope.All)] public class QualityDefinitionResourceValidatorTests { - private readonly QualityDefinitionResourceValidator _validator; - private readonly QualityDefinitionLimits _limits; - - public QualityDefinitionResourceValidatorTests() - { - _limits = new QualityDefinitionLimits(); - _validator = new QualityDefinitionResourceValidator(_limits); - } + private readonly QualityDefinitionResourceValidator _validator = new (); [Test] public void Validate_fails_when_min_size_is_below_min_limit() { - var resource = new QualityDefinitionResource { MinSize = _limits.MinLimit - 1 }; + var resource = new QualityDefinitionResource { MinSize = QualityDefinitionLimits.Min - 1 }; var result = _validator.TestValidate(resource); @@ -48,8 +41,8 @@ public class QualityDefinitionResourceValidatorTests { var resource = new QualityDefinitionResource { - MinSize = _limits.MinLimit, - PreferredSize = _limits.MaxLimit + MinSize = QualityDefinitionLimits.Min, + PreferredSize = QualityDefinitionLimits.Max }; var result = _validator.TestValidate(resource); @@ -75,7 +68,7 @@ public class QualityDefinitionResourceValidatorTests [Test] public void Validate_fails_when_max_size_exceeds_max_limit() { - var resource = new QualityDefinitionResource { MaxSize = _limits.MaxLimit + 1 }; + var resource = new QualityDefinitionResource { MaxSize = QualityDefinitionLimits.Max + 1 }; var result = _validator.TestValidate(resource); @@ -88,8 +81,8 @@ public class QualityDefinitionResourceValidatorTests { var resource = new QualityDefinitionResource { - MaxSize = _limits.MaxLimit, - PreferredSize = _limits.MinLimit + MaxSize = QualityDefinitionLimits.Max, + PreferredSize = QualityDefinitionLimits.Min }; var result = _validator.TestValidate(resource); diff --git a/src/NzbDrone.Core/Qualities/QualityDefinitionLimits.cs b/src/NzbDrone.Core/Qualities/QualityDefinitionLimits.cs index 1146a523c..418dbc837 100644 --- a/src/NzbDrone.Core/Qualities/QualityDefinitionLimits.cs +++ b/src/NzbDrone.Core/Qualities/QualityDefinitionLimits.cs @@ -1,11 +1,7 @@ -using System.Diagnostics.CodeAnalysis; - namespace NzbDrone.Core.Qualities; -[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = - "Serializable properties of a DTO")] -public record QualityDefinitionLimits +public static class QualityDefinitionLimits { - public int MinLimit => 0; - public int MaxLimit => 1000; + public const int Min = 0; + public const int Max = 1000; } diff --git a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs index ddfc5df1d..0b5096ff9 100644 --- a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs +++ b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs @@ -17,7 +17,6 @@ namespace NzbDrone.Core.Qualities List All(); QualityDefinition GetById(int id); QualityDefinition Get(Quality quality); - QualityDefinitionLimits GetLimits(); } public class QualityDefinitionService : IQualityDefinitionService, IExecute, IHandle @@ -65,11 +64,6 @@ namespace NzbDrone.Core.Qualities return GetAll()[quality]; } - public QualityDefinitionLimits GetLimits() - { - return new QualityDefinitionLimits(); - } - private void InsertMissingDefinitions() { var insertList = new List(); diff --git a/src/Sonarr.Api.V3/Qualities/QualityDefinitionController.cs b/src/Sonarr.Api.V3/Qualities/QualityDefinitionController.cs index 03c9c31f4..deed5b25a 100644 --- a/src/Sonarr.Api.V3/Qualities/QualityDefinitionController.cs +++ b/src/Sonarr.Api.V3/Qualities/QualityDefinitionController.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; +using NzbDrone.Api.V3.Qualities; using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Qualities; @@ -21,14 +22,8 @@ namespace Sonarr.Api.V3.Qualities { _qualityDefinitionService = qualityDefinitionService; - SetupValidation(qualityDefinitionService); - } - - private void SetupValidation(IQualityDefinitionService qualityDefinitionService) - { - var limits = qualityDefinitionService.GetLimits(); SharedValidator.RuleFor(c => c) - .SetValidator(new QualityDefinitionResourceValidator(limits)); + .SetValidator(new QualityDefinitionResourceValidator()); } [RestPutById] @@ -65,9 +60,9 @@ namespace Sonarr.Api.V3.Qualities } [HttpGet("limits")] - public ActionResult GetLimits() + public ActionResult GetLimits() { - return Ok(_qualityDefinitionService.GetLimits()); + return Ok(new QualityDefinitionLimitsResource()); } [NonAction] diff --git a/src/Sonarr.Api.V3/Qualities/QualityDefinitionLimitsResource.cs b/src/Sonarr.Api.V3/Qualities/QualityDefinitionLimitsResource.cs new file mode 100644 index 000000000..af8f63a4c --- /dev/null +++ b/src/Sonarr.Api.V3/Qualities/QualityDefinitionLimitsResource.cs @@ -0,0 +1,10 @@ +using NzbDrone.Core.Qualities; + +namespace NzbDrone.Api.V3.Qualities +{ + public class QualityDefinitionLimitsResource + { + public int Min { get; set; } = QualityDefinitionLimits.Min; + public int Max { get; set; } = QualityDefinitionLimits.Max; + } +} diff --git a/src/Sonarr.Api.V3/Qualities/QualityDefinitionResourceValidator.cs b/src/Sonarr.Api.V3/Qualities/QualityDefinitionResourceValidator.cs index 8a178e6d2..01c030a47 100644 --- a/src/Sonarr.Api.V3/Qualities/QualityDefinitionResourceValidator.cs +++ b/src/Sonarr.Api.V3/Qualities/QualityDefinitionResourceValidator.cs @@ -1,27 +1,27 @@ -using FluentValidation; +using FluentValidation; using NzbDrone.Core.Qualities; namespace Sonarr.Api.V3.Qualities; public class QualityDefinitionResourceValidator : AbstractValidator { - public QualityDefinitionResourceValidator(QualityDefinitionLimits limits) + public QualityDefinitionResourceValidator() { When(c => c.MinSize is not null, () => { RuleFor(c => c.MinSize) - .GreaterThanOrEqualTo(limits.MinLimit) + .GreaterThanOrEqualTo(QualityDefinitionLimits.Min) .WithErrorCode("GreaterThanOrEqualTo") - .LessThanOrEqualTo(c => c.PreferredSize ?? limits.MaxLimit) + .LessThanOrEqualTo(c => c.PreferredSize ?? QualityDefinitionLimits.Max) .WithErrorCode("LessThanOrEqualTo"); }); When(c => c.MaxSize is not null, () => { RuleFor(c => c.MaxSize) - .GreaterThanOrEqualTo(c => c.PreferredSize ?? limits.MinLimit) + .GreaterThanOrEqualTo(c => c.PreferredSize ?? QualityDefinitionLimits.Min) .WithErrorCode("GreaterThanOrEqualTo") - .LessThanOrEqualTo(limits.MaxLimit) + .LessThanOrEqualTo(QualityDefinitionLimits.Max) .WithErrorCode("LessThanOrEqualTo"); }); }