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 _giteaPackageServiceMock = new Mock(); private readonly List _packages; public PackageFilterTests() { _packageService = new PackageService(_giteaPackageServiceMock.Object); _packages = _versions.Select(v => new GiteaPackage { Version = v, Name = $"test-{v}" }).ToList(); } [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 _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" ]; private readonly List _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" ]; private List _expectDeleted => _versions.Except(_versionsToHold).ToList(); }