using System.Diagnostics.CodeAnalysis; using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Config.Models; using Recyclarr.ServarrApi.Dto; namespace Recyclarr.Cli.Tests; public static class NewQp { public static ProcessedQualityProfileData Processed( string profileName, params (string TrashId, int FormatId, int Score)[] scores) { return Processed(profileName, false, scores); } public static ProcessedQualityProfileData Processed( string profileName, bool resetUnmatchedScores, params (string TrashId, int FormatId, int Score)[] scores) { return Processed(profileName, resetUnmatchedScores, scores.Select(x => ("", x.TrashId, x.FormatId, x.Score)).ToArray()); } public static ProcessedQualityProfileData Processed( string profileName, bool resetUnmatchedScores, params (string CfName, string TrashId, int FormatId, int Score)[] scores) { var profileConfig = new QualityProfileConfig { Name = profileName, ResetUnmatchedScores = new ResetUnmatchedScoresConfig { Enabled = resetUnmatchedScores } }; return Processed(profileConfig, scores); } public static ProcessedQualityProfileData Processed( QualityProfileConfig profileConfig, params (string CfName, string TrashId, int FormatId, int Score)[] scores) { return new ProcessedQualityProfileData { Profile = profileConfig, CfScores = scores .Select(x => new ProcessedQualityProfileScore(x.TrashId, x.CfName, x.FormatId, x.Score)) .ToList() }; } public static UpdatedFormatScore UpdatedScore( string name, int oldScore, int newScore, FormatScoreUpdateReason reason) { return new UpdatedFormatScore( new ProfileFormatItemDto {Name = name, Score = oldScore}, newScore, reason); } public static ProfileItemDto GroupDto( int itemId, string itemName, bool enabled, params ProfileItemDto[] nestedItems) { return new ProfileItemDto { Id = itemId, Name = itemName, Allowed = enabled, Items = nestedItems }; } public static ProfileItemDto QualityDto(int itemId, string itemName, bool enabled) { return new ProfileItemDto { Allowed = enabled, Quality = new ProfileItemQualityDto { Id = itemId, Name = itemName } }; } [SuppressMessage("ReSharper", "IntroduceOptionalParameters.Global", Justification = "This is for unit test purposes and we want to be explicit sometimes")] public static QualityProfileQualityConfig QualityConfig(string itemName) { return QualityConfig(itemName, true); } public static QualityProfileQualityConfig QualityConfig(string itemName, bool enabled) { return new QualityProfileQualityConfig { Enabled = enabled, Name = itemName }; } public static QualityProfileQualityConfig GroupConfig(string itemName, params string[] nestedItems) { return GroupConfig(itemName, true, nestedItems); } public static QualityProfileQualityConfig GroupConfig(string itemName, bool enabled, params string[] nestedItems) { return QualityConfig(itemName, enabled) with {Qualities = nestedItems}; } }