diff --git a/src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs b/src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs index 297ca74c..68062d87 100644 --- a/src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs +++ b/src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs @@ -9,21 +9,7 @@ namespace Recyclarr.Cli.Tests.Console.Helpers; public class CacheStoragePathTest { [Test, AutoMockData] - public void Use_guid_when_no_name(CacheStoragePath sut) - { - var config = new SonarrConfiguration - { - BaseUrl = new Uri("http://something"), - InstanceName = null - }; - - var result = sut.CalculatePath(config, "obj"); - - result.FullName.Should().MatchRegex(@".*[/\\][a-f0-9]+[/\\]obj\.json$"); - } - - [Test, AutoMockData] - public void Use_name_when_not_null(CacheStoragePath sut) + public void Use_instance_name_in_path(CacheStoragePath sut) { var config = new SonarrConfiguration { diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs b/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs index 24d48fec..da070ff9 100644 --- a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs +++ b/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs @@ -21,7 +21,7 @@ public class CustomFormatConfigPhaseTest NewCf.Data("two", "cf2") }); - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { CustomFormats = new List { @@ -55,7 +55,7 @@ public class CustomFormatConfigPhaseTest NewCf.Data("", "cf4") }); - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { CustomFormats = new List { diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs b/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs index 0bae0e3b..e49bd8cf 100644 --- a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs +++ b/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs @@ -3,7 +3,6 @@ using Recyclarr.Cli.Pipelines.CustomFormat.Models; using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; using Recyclarr.Cli.TestLibrary; using Recyclarr.TrashLib.Cache; -using Recyclarr.TrashLib.Config.Services; using Recyclarr.TrashLib.Models; using Recyclarr.TrashLib.TestLibrary; @@ -27,7 +26,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture var cache = new CustomFormatCache(); - var config = new RadarrConfiguration(); + var config = NewConfig.Radarr(); var result = sut.Execute(config, guideCfs, serviceData, cache); @@ -63,7 +62,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture var cache = new CustomFormatCache(); - var config = new RadarrConfiguration(); + var config = NewConfig.Radarr(); var result = sut.Execute(config, guideCfs, serviceData, cache); @@ -108,7 +107,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration(); + var config = NewConfig.Radarr(); var result = sut.Execute(config, guideCfs, serviceData, cache); @@ -147,7 +146,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture var cache = new CustomFormatCache(); - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = true }; @@ -184,7 +183,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture var cache = new CustomFormatCache(); - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = false }; @@ -224,7 +223,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = false }; @@ -270,7 +269,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = false }; @@ -303,7 +302,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture var cache = new CustomFormatCache(); - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = true }; @@ -339,7 +338,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration + var config = NewConfig.Radarr() with { ReplaceExistingCustomFormats = false }; @@ -372,7 +371,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration(); + var config = NewConfig.Radarr(); var result = sut.Execute(config, guideCfs, serviceData, cache); @@ -408,7 +407,7 @@ public class CustomFormatTransactionPhaseTest : CliIntegrationFixture } }; - var config = new RadarrConfiguration(); + var config = NewConfig.Radarr(); var result = sut.Execute(config, guideCfs, serviceData, cache); diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs b/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs index fc51c80e..74899e6b 100644 --- a/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs +++ b/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs @@ -13,7 +13,7 @@ public class QualityProfileConfigPhaseTest { private static RadarrConfiguration SetupCfs(params CustomFormatConfig[] cfConfigs) { - return new RadarrConfiguration + return NewConfig.Radarr() with { CustomFormats = cfConfigs }; diff --git a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs b/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs index 49f81c6b..2a997c3a 100644 --- a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs +++ b/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs @@ -1,6 +1,7 @@ using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.TestLibrary.AutoFixture; using Recyclarr.TrashLib.Config.Services; +using Recyclarr.TrashLib.TestLibrary; namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases; @@ -11,7 +12,7 @@ public class TagConfigPhaseTest [Test, AutoMockData] public void Return_null_when_list_empty(TagConfigPhase sut) { - var config = new SonarrConfiguration + var config = NewConfig.Sonarr() with { ReleaseProfiles = Array.Empty() }; @@ -23,7 +24,7 @@ public class TagConfigPhaseTest [Test, AutoMockData] public void Return_tags(TagConfigPhase sut) { - var config = new SonarrConfiguration + var config = NewConfig.Sonarr() with { ReleaseProfiles = new[] { diff --git a/src/Recyclarr.Cli/Console/Helpers/CacheStoragePath.cs b/src/Recyclarr.Cli/Console/Helpers/CacheStoragePath.cs index c6996d62..9e68060b 100644 --- a/src/Recyclarr.Cli/Console/Helpers/CacheStoragePath.cs +++ b/src/Recyclarr.Cli/Console/Helpers/CacheStoragePath.cs @@ -22,18 +22,9 @@ public class CacheStoragePath : ICacheStoragePath private string BuildUniqueServiceDir(IServiceConfiguration config) { - // In the future, once array-style configurations are removed, the service name will no longer be optional - // and the below condition can be removed and the logic simplified. - var dirName = new StringBuilder(); - if (config.InstanceName is not null) - { - dirName.Append($"{config.InstanceName}_"); - } - var url = config.BaseUrl.OriginalString; var guid = _hash.ComputeHash(Encoding.ASCII.GetBytes(url)).AsHexString(); - dirName.Append(guid); - return dirName.ToString(); + return $"{config.InstanceName}_{guid}"; } public IFileInfo CalculatePath(IServiceConfiguration config, string cacheObjectName) diff --git a/src/Recyclarr.Cli/Processors/SyncProcessor.cs b/src/Recyclarr.Cli/Processors/SyncProcessor.cs index 8bf477be..552743a3 100644 --- a/src/Recyclarr.Cli/Processors/SyncProcessor.cs +++ b/src/Recyclarr.Cli/Processors/SyncProcessor.cs @@ -105,7 +105,7 @@ public class SyncProcessor : ISyncProcessor private void PrintProcessingHeader(SupportedServices serviceType, IServiceConfiguration config) { - var instanceName = config.InstanceName ?? FlurlLogging.SanitizeUrl(config.BaseUrl); + var instanceName = config.InstanceName; _console.WriteLine($@" =========================================== diff --git a/src/Recyclarr.TrashLib.TestLibrary/NewConfig.cs b/src/Recyclarr.TrashLib.TestLibrary/NewConfig.cs new file mode 100644 index 00000000..c9e5516a --- /dev/null +++ b/src/Recyclarr.TrashLib.TestLibrary/NewConfig.cs @@ -0,0 +1,22 @@ +using Recyclarr.TrashLib.Config.Services; + +namespace Recyclarr.TrashLib.TestLibrary; + +public static class NewConfig +{ + public static RadarrConfiguration Radarr() + { + return new RadarrConfiguration + { + InstanceName = "" + }; + } + + public static SonarrConfiguration Sonarr() + { + return new SonarrConfiguration + { + InstanceName = "" + }; + } +} diff --git a/src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs b/src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs index 54c252ab..5738a499 100644 --- a/src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs +++ b/src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs @@ -1,6 +1,7 @@ using Recyclarr.TrashLib.Compatibility.Sonarr; using Recyclarr.TrashLib.Config.Services; using Recyclarr.TrashLib.ExceptionTypes; +using Recyclarr.TrashLib.TestLibrary; namespace Recyclarr.TrashLib.Tests.Compatibility.Sonarr; @@ -13,7 +14,7 @@ public class SonarrCapabilityEnforcerTest [Frozen] ISonarrCapabilityChecker checker, SonarrCapabilityEnforcer sut) { - var config = new SonarrConfiguration(); + var config = NewConfig.Sonarr(); checker.GetCapabilities(default!).ReturnsForAnyArgs((SonarrCapabilities?) null); @@ -27,7 +28,7 @@ public class SonarrCapabilityEnforcerTest [Frozen] ISonarrCapabilityChecker checker, SonarrCapabilityEnforcer sut) { - var config = new SonarrConfiguration(); + var config = NewConfig.Sonarr(); checker.GetCapabilities(default!).ReturnsForAnyArgs(new SonarrCapabilities(new Version()) { @@ -44,7 +45,7 @@ public class SonarrCapabilityEnforcerTest [Frozen] ISonarrCapabilityChecker checker, SonarrCapabilityEnforcer sut) { - var config = new SonarrConfiguration + var config = NewConfig.Sonarr() with { ReleaseProfiles = new List { @@ -68,7 +69,7 @@ public class SonarrCapabilityEnforcerTest [Frozen] ISonarrCapabilityChecker checker, SonarrCapabilityEnforcer sut) { - var config = new SonarrConfiguration + var config = NewConfig.Sonarr() with { CustomFormats = new List { diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs index 77b78c78..e1edbb10 100644 --- a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs +++ b/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs @@ -2,7 +2,7 @@ using FluentValidation; using FluentValidation.Results; using Recyclarr.Common.FluentValidation; using Recyclarr.TrashLib.Config.Parsing; -using Recyclarr.TrashLib.Config.Services; +using Recyclarr.TrashLib.TestLibrary; namespace Recyclarr.TrashLib.Tests.Config.Parsing; @@ -20,7 +20,7 @@ public class ConfigValidationExecutorTest new ValidationFailure("property", "message") })); - var result = sut.Validate(new RadarrConfiguration()); + var result = sut.Validate(NewConfig.Radarr()); result.Should().BeFalse(); } @@ -35,7 +35,7 @@ public class ConfigValidationExecutorTest new ValidationFailure("property", "message") {Severity = Severity.Warning} })); - var result = sut.Validate(new RadarrConfiguration()); + var result = sut.Validate(NewConfig.Radarr()); result.Should().BeTrue(); } @@ -47,7 +47,7 @@ public class ConfigValidationExecutorTest { validationService.Validate(default!).ReturnsForAnyArgs(new ValidationResult()); - var result = sut.Validate(new RadarrConfiguration()); + var result = sut.Validate(NewConfig.Radarr()); result.Should().BeTrue(); } diff --git a/src/Recyclarr.TrashLib/Config/Listers/ConfigLocalLister.cs b/src/Recyclarr.TrashLib/Config/Listers/ConfigLocalLister.cs index edb941f3..4f2eab4c 100644 --- a/src/Recyclarr.TrashLib/Config/Listers/ConfigLocalLister.cs +++ b/src/Recyclarr.TrashLib/Config/Listers/ConfigLocalLister.cs @@ -77,7 +77,7 @@ public class ConfigLocalLister : IConfigLister var tree = new Tree(Markup.FromInterpolated($"[red]{service}[/]")); tree.AddNodes(configs.Select(c => - Markup.FromInterpolated($"[blue]{c.InstanceName ?? c.BaseUrl.ToString()}[/]"))); + Markup.FromInterpolated($"[blue]{c.InstanceName}[/]"))); rows.Add(tree); } diff --git a/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs b/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs index d150f121..6399a292 100644 --- a/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs +++ b/src/Recyclarr.TrashLib/Config/Services/IServiceConfiguration.cs @@ -3,7 +3,7 @@ namespace Recyclarr.TrashLib.Config.Services; public interface IServiceConfiguration { SupportedServices ServiceType { get; } - string? InstanceName { get; } + string InstanceName { get; } Uri BaseUrl { get; } string ApiKey { get; } bool DeleteOldCustomFormats { get; } diff --git a/src/Recyclarr.TrashLib/Config/Services/ServiceConfiguration.cs b/src/Recyclarr.TrashLib/Config/Services/ServiceConfiguration.cs index d40d2b6e..4fe7534a 100644 --- a/src/Recyclarr.TrashLib/Config/Services/ServiceConfiguration.cs +++ b/src/Recyclarr.TrashLib/Config/Services/ServiceConfiguration.cs @@ -5,7 +5,7 @@ namespace Recyclarr.TrashLib.Config.Services; public abstract record ServiceConfiguration : IServiceConfiguration { public abstract SupportedServices ServiceType { get; } - public string? InstanceName { get; set; } + public required string InstanceName { get; init; } public Uri BaseUrl { get; set; } = new("about:empty"); public string ApiKey { get; init; } = "";