You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/tests/Recyclarr.Tests/Config/ConfigExtensionsTest.cs

158 lines
4.8 KiB

using Recyclarr.Config;
using Recyclarr.Config.Models;
using Recyclarr.TrashGuide;
namespace Recyclarr.Tests.Config;
[TestFixture]
public class ConfigExtensionsTest
{
[Test]
public void Filter_invalid_instances()
{
var configs = new[]
{
new RadarrConfiguration
{
InstanceName = "valid_NAME", // Comparison should be case-insensitive
},
};
var invalidInstanceNames = configs.GetInvalidInstanceNames(
new ConfigFilterCriteria { Instances = ["valid_name", "invalid_name"] }
);
invalidInstanceNames.Should().BeEquivalentTo("invalid_name");
}
[Test]
public void Filter_invalid_instances_when_null()
{
var configs = new[]
{
new RadarrConfiguration
{
InstanceName = "valid_NAME", // Comparison should be case-insensitive
},
};
var invalidInstanceNames = configs.GetInvalidInstanceNames(
new ConfigFilterCriteria { Instances = null }
);
invalidInstanceNames.Should().BeEmpty();
}
[Test]
public void Get_configs_matching_service_type_and_instance_name()
{
var configs = new IServiceConfiguration[]
{
new RadarrConfiguration { InstanceName = "radarr1" },
new RadarrConfiguration { InstanceName = "radarr2" },
new RadarrConfiguration { InstanceName = "radarr3" },
new RadarrConfiguration { InstanceName = "radarr4" },
new SonarrConfiguration { InstanceName = "sonarr1" },
new SonarrConfiguration { InstanceName = "sonarr2" },
new SonarrConfiguration { InstanceName = "sonarr3" },
new SonarrConfiguration { InstanceName = "sonarr4" },
};
var result = configs.GetConfigsBasedOnSettings(
new ConfigFilterCriteria
{
Service = SupportedServices.Radarr,
Instances = ["radarr2", "radarr4", "radarr5", "sonarr2"],
}
);
result.Select(x => x.InstanceName).Should().BeEquivalentTo("radarr2", "radarr4");
}
[Test]
public void Get_configs_based_on_settings_with_empty_instances()
{
var configs = new IServiceConfiguration[]
{
new RadarrConfiguration { InstanceName = "radarr1" },
new SonarrConfiguration { InstanceName = "sonarr1" },
};
var result = configs.GetConfigsBasedOnSettings(
new ConfigFilterCriteria { Instances = Array.Empty<string>() }
);
result.Select(x => x.InstanceName).Should().BeEquivalentTo("radarr1", "sonarr1");
}
[Test]
public void Get_split_instance_names()
{
var configs = new IServiceConfiguration[]
{
new RadarrConfiguration
{
InstanceName = "radarr1",
BaseUrl = new Uri("http://radarr1"),
},
new RadarrConfiguration
{
InstanceName = "radarr2",
BaseUrl = new Uri("http://radarr1"),
},
new RadarrConfiguration
{
InstanceName = "radarr3",
BaseUrl = new Uri("http://radarr3"),
},
new RadarrConfiguration
{
InstanceName = "radarr4",
BaseUrl = new Uri("http://radarr4"),
},
new SonarrConfiguration
{
InstanceName = "sonarr1",
BaseUrl = new Uri("http://sonarr1"),
},
new SonarrConfiguration
{
InstanceName = "sonarr2",
BaseUrl = new Uri("http://sonarr2"),
},
new SonarrConfiguration
{
InstanceName = "sonarr3",
BaseUrl = new Uri("http://sonarr2"),
},
new SonarrConfiguration
{
InstanceName = "sonarr4",
BaseUrl = new Uri("http://sonarr4"),
},
};
var result = configs.GetSplitInstances();
result.Should().BeEquivalentTo("radarr1", "radarr2", "sonarr2", "sonarr3");
}
[Test]
public void Get_duplicate_instance_names()
{
var configs = new IServiceConfiguration[]
{
new RadarrConfiguration { InstanceName = "radarr1" },
new RadarrConfiguration { InstanceName = "radarr2" },
new RadarrConfiguration { InstanceName = "radarr2" },
new RadarrConfiguration { InstanceName = "radarr3" },
new SonarrConfiguration { InstanceName = "sonarr1" },
new SonarrConfiguration { InstanceName = "sonarr1" },
};
var result = configs.GetDuplicateInstanceNames();
result.Should().BeEquivalentTo("radarr2", "sonarr1");
}
}