190 lines
4.9 KiB
C#
190 lines
4.9 KiB
C#
using Moq;
|
|
using sh.actions.package_cleanup.Models;
|
|
using sh.actions.package_cleanup.Service;
|
|
using Xunit;
|
|
|
|
namespace sh.actions.package_cleanup.Tests.Service;
|
|
|
|
public class PackageFilterTests
|
|
{
|
|
private readonly IPackageService _packageService;
|
|
private readonly Mock<IGiteaPackageService> _giteaPackageServiceMock = new Mock<IGiteaPackageService>();
|
|
private readonly List<GiteaPackage> _packages;
|
|
|
|
|
|
public PackageFilterTests()
|
|
{
|
|
_packageService = new PackageService(_giteaPackageServiceMock.Object);
|
|
_packages = _versions.Select(v => new GiteaPackage
|
|
{
|
|
Version = v,
|
|
Name = $"test-{v}"
|
|
}).ToList();
|
|
}
|
|
|
|
[Fact]
|
|
public void TestPackageNameParsing()
|
|
{
|
|
var inputString =
|
|
"@sh-edraft.de/core, sh-edraft.core.api, sh-edraft.core.api.auth, sh-edraft.core.api.configuration, sh-edraft.core.api.db, sh-edraft.core.api.graphql, sh-edraft.core.api.service, sh-edraft.core.utils";
|
|
List<string> expected = [
|
|
"@sh-edraft.de/core",
|
|
"sh-edraft.core.api",
|
|
"sh-edraft.core.api.auth",
|
|
"sh-edraft.core.api.configuration",
|
|
"sh-edraft.core.api.db",
|
|
"sh-edraft.core.api.graphql",
|
|
"sh-edraft.core.api.service",
|
|
"sh-edraft.core.utils"
|
|
];
|
|
|
|
var actual = inputString
|
|
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
|
|
|
Assert.Equal(expected.Count, actual.Length);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestFilterPackagesToDelete()
|
|
{
|
|
var toDelete = _packageService.FilterPackagesToDelete(_packages);
|
|
var toDeleteVersions = toDelete
|
|
.Select(x => x.Version)
|
|
.OrderByDescending(x => x)
|
|
.ToList();
|
|
var expected = _expectDeleted.OrderByDescending(x => x).ToList();
|
|
Assert.Equal(expected.Count, toDeleteVersions.Count);
|
|
Assert.Equal(expected, toDeleteVersions);
|
|
}
|
|
|
|
private readonly List<string> _versions =
|
|
[
|
|
"0.1.0",
|
|
"0.1.1",
|
|
"0.1.2",
|
|
"1.0",
|
|
"1.1",
|
|
"1.2",
|
|
"2024.8.6.0",
|
|
"2024.8.7.0",
|
|
"2024.8.8.0",
|
|
"2024.8.9.0",
|
|
"2024.8.10.0",
|
|
"2024.8.11.0",
|
|
"latest",
|
|
// dev
|
|
"0-dev",
|
|
"1-dev",
|
|
"2-dev",
|
|
"1.0-dev",
|
|
"1.1-dev",
|
|
"1.2-dev",
|
|
"0.1.0-dev",
|
|
"0.1.1-dev",
|
|
"0.1.2-dev",
|
|
"2024.8.6.0-dev",
|
|
"2024.8.6.1-dev",
|
|
"2024.8.7.0-dev",
|
|
"2024.8.7.1-dev",
|
|
"2024.8.8.0-dev",
|
|
"2024.8.8.1-dev",
|
|
"2024.8.9.0-dev",
|
|
"2024.8.9.1-dev",
|
|
"2024.8.10.0-dev",
|
|
"2024.8.10.1-dev",
|
|
"2024.8.11.0-dev",
|
|
"2024.8.11.1-dev",
|
|
// test
|
|
"0.1.0-test",
|
|
"0.1.1-test",
|
|
"0.1.2-test",
|
|
"2024.8.6.0-test",
|
|
"2024.8.6.1-test",
|
|
"2024.8.7.0-test",
|
|
"2024.8.7.1-test",
|
|
"2024.8.8.0-test",
|
|
"2024.8.8.1-test",
|
|
"2024.8.9.0-test",
|
|
"2024.8.9.1-test",
|
|
"2024.8.10.0-test",
|
|
"2024.8.10.1-test",
|
|
"2024.8.11.0-test",
|
|
// exp
|
|
"0.1.0-exp",
|
|
"0.1.1-exp",
|
|
"0.1.2-exp",
|
|
"2024.8.6.0-exp",
|
|
"2024.8.6.1-exp",
|
|
"2024.8.7.0-exp",
|
|
"2024.8.7.1-exp",
|
|
"2024.8.8.0-exp",
|
|
"2024.8.8.1-exp",
|
|
"2024.8.9.0-exp",
|
|
"2024.8.9.1-exp",
|
|
"2024.8.10.0-exp",
|
|
"2024.8.10.1-exp",
|
|
"2024.8.11.0-exp",
|
|
"2024.8.11.2-exp",
|
|
"2026.2.21.27-dev",
|
|
"2026.2.21.26-dev",
|
|
"2026.2.21.25-dev",
|
|
"2026.2.21.24-dev",
|
|
"2026.2.21.23-dev",
|
|
"2026.2.21.22-dev",
|
|
"2026.2.21.21-dev",
|
|
"2026.2.21.20-dev",
|
|
"2026.2.21.19-dev",
|
|
"2026.2.21.18-dev",
|
|
"2026.2.21.17-dev",
|
|
"2026.2.21.15-dev",
|
|
"2026.2.21.14-dev",
|
|
"2026.2.21.13-dev",
|
|
"2026.2.21.12-dev",
|
|
"2026.2.21.11-dev",
|
|
"2026.2.21.10-dev",
|
|
"2026.2.21.9-dev",
|
|
"2026.2.21.8-dev",
|
|
];
|
|
|
|
private readonly List<string> _versionsToHold =
|
|
[
|
|
// prod (no suffix)
|
|
"0.1.0",
|
|
"0.1.1",
|
|
"0.1.2",
|
|
"1.0",
|
|
"1.1",
|
|
"1.2",
|
|
"2024.8.6.0",
|
|
"2024.8.7.0",
|
|
"2024.8.8.0",
|
|
"2024.8.9.0",
|
|
"2024.8.10.0",
|
|
"2024.8.11.0",
|
|
"latest",
|
|
// dev
|
|
"1-dev",
|
|
"2-dev",
|
|
"1.1-dev",
|
|
"1.2-dev",
|
|
"0.1.1-dev",
|
|
"0.1.2-dev",
|
|
"2024.8.11.0-dev",
|
|
"2024.8.11.1-dev",
|
|
// test
|
|
"0.1.1-test",
|
|
"0.1.2-test",
|
|
"2024.8.10.1-test",
|
|
"2024.8.11.0-test",
|
|
// exp
|
|
"0.1.1-exp",
|
|
"0.1.2-exp",
|
|
"2024.8.11.0-exp",
|
|
"2024.8.11.2-exp",
|
|
"2026.2.21.27-dev",
|
|
"2026.2.21.26-dev",
|
|
];
|
|
|
|
private List<string> _expectDeleted => _versions.Except(_versionsToHold).ToList();
|
|
} |