Files
actions/sh.actions.package-cleanup.Tests/Service/PackageServiceTests.cs
edraft 4e8b04da7b
All checks were successful
Build on push / prepare (push) Successful in 5s
Build on push / build (push) Successful in 18s
Fixed error handling
2026-02-22 00:17:23 +01:00

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();
}