fixup! fixup! wip

integration-tests
Robert Dailey 4 months ago
parent 27f90d7516
commit 22fa41c31b

@ -7,4 +7,5 @@ public interface IRepoMetadataBuilder
RepoMetadata GetMetadata();
IReadOnlyList<IDirectoryInfo> ToDirectoryInfoList(IEnumerable<string> listOfDirectories);
IDirectoryInfo DocsDirectory { get; }
IFileInfo MetadataPath { get; }
}

@ -4,16 +4,13 @@ using Recyclarr.Json;
namespace Recyclarr.Repo;
public class TrashRepoMetadataBuilder : IRepoMetadataBuilder
public class TrashRepoMetadataBuilder(ITrashGuidesRepo repo) : IRepoMetadataBuilder
{
private readonly Lazy<RepoMetadata> _metadata;
private readonly IDirectoryInfo _repoPath;
private RepoMetadata? _metadata;
private readonly IDirectoryInfo _repoPath = repo.Path;
public TrashRepoMetadataBuilder(ITrashGuidesRepo repo)
{
_repoPath = repo.Path;
_metadata = new Lazy<RepoMetadata>(() => Deserialize(_repoPath.File("metadata.json")));
}
public IFileInfo MetadataPath => _repoPath.File("metadata.json");
public IDirectoryInfo DocsDirectory => _repoPath.SubDirectory("docs");
private static RepoMetadata Deserialize(IFileInfo jsonFile)
{
@ -33,10 +30,8 @@ public class TrashRepoMetadataBuilder : IRepoMetadataBuilder
return listOfDirectories.Select(x => _repoPath.SubDirectory(x)).ToList();
}
public IDirectoryInfo DocsDirectory => _repoPath.SubDirectory("docs");
public RepoMetadata GetMetadata()
{
return _metadata.Value;
return _metadata ??= Deserialize(MetadataPath);
}
}

@ -3,6 +3,7 @@ using Autofac;
using Autofac.Features.ResolveAnything;
using Recyclarr.Compatibility;
using Recyclarr.Platform;
using Recyclarr.Repo;
using Recyclarr.TestLibrary;
using Recyclarr.TestLibrary.Autofac;
using Recyclarr.VersionControl;
@ -56,7 +57,7 @@ public abstract class IntegrationTestFixture2 : IDisposable
{
builder.RegisterType<StubEnvironment>().As<IEnvironment>();
builder.RegisterInstance(Fs).As<IFileSystem>();
builder.RegisterInstance(Fs).As<IFileSystem>().AsSelf();
builder.RegisterInstance(Console).As<IAnsiConsole>();
builder.RegisterInstance(Logger).As<ILogger>();
@ -67,6 +68,8 @@ public abstract class IntegrationTestFixture2 : IDisposable
// By default, choose some extremely high number so that all the newest features are enabled.
m.GetVersion(default!).ReturnsForAnyArgs(_ => new Version("99.0.0.0"));
});
builder.RegisterDecorator<StubTrashRepoMetadataBuilder, IRepoMetadataBuilder>();
}
[TearDown]

@ -0,0 +1,52 @@
using System.IO.Abstractions;
using Recyclarr.Repo;
using Recyclarr.TestLibrary;
namespace Recyclarr.Cli.IntegrationTests;
public class StubTrashRepoMetadataBuilder : IRepoMetadataBuilder
{
private readonly IRepoMetadataBuilder _metadata;
private const string MetadataJson =
"""
{
"json_paths": {
"radarr": {
"custom_formats": ["docs/json/radarr/cf"],
"qualities": ["docs/json/radarr/quality-size"],
"naming": ["docs/json/radarr/naming"]
},
"sonarr": {
"release_profiles": ["docs/json/sonarr/rp"],
"custom_formats": ["docs/json/sonarr/cf"],
"qualities": ["docs/json/sonarr/quality-size"],
"naming": ["docs/json/sonarr/naming"]
}
},
"recyclarr": {
"templates": "docs/recyclarr-configs"
}
}
""";
public StubTrashRepoMetadataBuilder(MockFileSystem fs, IRepoMetadataBuilder metadata)
{
_metadata = metadata;
fs.AddFile(MetadataPath, new MockFileData(MetadataJson));
fs.AddSameFileFromEmbeddedResource(
DocsDirectory.SubDirectory("Radarr").File("Radarr-collection-of-custom-formats.md"),
typeof(StubTrashRepoMetadataBuilder));
fs.AddSameFileFromEmbeddedResource(
DocsDirectory.SubDirectory("Sonarr").File("sonarr-collection-of-custom-formats.md"),
typeof(StubTrashRepoMetadataBuilder));
}
public IDirectoryInfo DocsDirectory => _metadata.DocsDirectory;
public IFileInfo MetadataPath => _metadata.MetadataPath;
public RepoMetadata GetMetadata() => _metadata.GetMetadata();
public IReadOnlyList<IDirectoryInfo> ToDirectoryInfoList(IEnumerable<string> listOfDirectories)
=> _metadata.ToDirectoryInfoList(listOfDirectories);
}
Loading…
Cancel
Save