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.
88 lines
2.4 KiB
88 lines
2.4 KiB
using System.IO.Abstractions;
|
|
using System.IO.Abstractions.TestingHelpers;
|
|
using FluentAssertions;
|
|
using NUnit.Framework;
|
|
using Recyclarr.Cli.Command.Setup;
|
|
using Recyclarr.Cli.TestLibrary;
|
|
using Recyclarr.TrashLib.Config.Settings;
|
|
|
|
namespace Recyclarr.Cli.Tests;
|
|
|
|
[TestFixture]
|
|
[Parallelizable(ParallelScope.All)]
|
|
public class BaseCommandSetupIntegrationTest : IntegrationFixture
|
|
{
|
|
[Test]
|
|
public void Base_command_startup_tasks_are_registered()
|
|
{
|
|
var registrations = Resolve<IEnumerable<IBaseCommandSetupTask>>();
|
|
registrations.Select(x => x.GetType()).Should().BeEquivalentTo(new[]
|
|
{
|
|
typeof(JanitorCleanupTask),
|
|
typeof(AppPathSetupTask)
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Log_janitor_cleans_up_user_specified_max_files()
|
|
{
|
|
const int maxFiles = 25;
|
|
|
|
Fs.AddFile(Paths.SettingsPath.FullName, new MockFileData($@"
|
|
log_janitor:
|
|
max_files: {maxFiles}
|
|
"));
|
|
|
|
for (var i = 0; i < maxFiles + 20; ++i)
|
|
{
|
|
Fs.AddFile(Paths.LogDirectory.File($"logfile-{i}.log").FullName, new MockFileData(""));
|
|
}
|
|
|
|
var sut = Resolve<JanitorCleanupTask>();
|
|
sut.OnFinish();
|
|
|
|
Fs.AllFiles.Where(x => x.StartsWith(Paths.LogDirectory.FullName))
|
|
.Should().HaveCount(maxFiles);
|
|
}
|
|
|
|
[Test]
|
|
public void Log_janitor_cleans_up_default_max_files()
|
|
{
|
|
var settingsProvider = Resolve<ISettingsProvider>();
|
|
var maxFiles = settingsProvider.Settings.LogJanitor.MaxFiles;
|
|
|
|
for (var i = 0; i < maxFiles + 20; ++i)
|
|
{
|
|
Fs.AddFile(Paths.LogDirectory.File($"logfile-{i}.log").FullName, new MockFileData(""));
|
|
}
|
|
|
|
var sut = Resolve<JanitorCleanupTask>();
|
|
sut.OnFinish();
|
|
|
|
maxFiles.Should().BeGreaterThan(0);
|
|
Fs.AllFiles.Where(x => x.StartsWith(Paths.LogDirectory.FullName))
|
|
.Should().HaveCount(maxFiles);
|
|
}
|
|
|
|
[Test]
|
|
public void App_paths_setup_creates_initial_directories()
|
|
{
|
|
for (var i = 0; i < 50; ++i)
|
|
{
|
|
Fs.AddFile(Paths.LogDirectory.File($"logfile-{i}.log").FullName, new MockFileData(""));
|
|
}
|
|
|
|
var sut = Resolve<AppPathSetupTask>();
|
|
sut.OnStart();
|
|
|
|
var expectedDirs = new[]
|
|
{
|
|
Paths.LogDirectory.FullName,
|
|
Paths.RepoDirectory.FullName,
|
|
Paths.CacheDirectory.FullName
|
|
};
|
|
|
|
expectedDirs.Should().IntersectWith(Fs.AllDirectories);
|
|
}
|
|
}
|