diff --git a/DependencyUpdated.sln b/DependencyUpdated.sln index f359c9b..fa5ab36 100644 --- a/DependencyUpdated.sln +++ b/DependencyUpdated.sln @@ -24,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyUpdated.Projects. EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0D271967-C5D2-425F-883E-FFCDC51A62A2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyUpdated.Core.UnitTests", "tests\DependencyUpdated.Core.UnitTests\DependencyUpdated.Core.UnitTests.csproj", "{A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -50,6 +52,10 @@ Global {0F4B408D-9B4A-4621-BD67-AB80EB74E14B}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F4B408D-9B4A-4621-BD67-AB80EB74E14B}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F4B408D-9B4A-4621-BD67-AB80EB74E14B}.Release|Any CPU.Build.0 = Release|Any CPU + {A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {0F4B408D-9B4A-4621-BD67-AB80EB74E14B} = {35DCECB9-4FF1-4277-8C84-B905A5D1E693} @@ -57,5 +63,6 @@ Global {F346E159-924F-4206-B2BA-D5B34F91B9C0} = {0D271967-C5D2-425F-883E-FFCDC51A62A2} {D10799F8-DCBB-442E-85C0-2F473C716D01} = {0D271967-C5D2-425F-883E-FFCDC51A62A2} {A9181ADC-801D-45BE-B091-CF6C14E6F702} = {0D271967-C5D2-425F-883E-FFCDC51A62A2} + {A6ACB1EA-5F1B-4C85-AE9E-D376A1A80744} = {35DCECB9-4FF1-4277-8C84-B905A5D1E693} EndGlobalSection EndGlobal diff --git a/src/DependencyUpdated.Core/Config/Project.cs b/src/DependencyUpdated.Core/Config/Project.cs index b933f2f..1cdc5c8 100644 --- a/src/DependencyUpdated.Core/Config/Project.cs +++ b/src/DependencyUpdated.Core/Config/Project.cs @@ -31,6 +31,14 @@ public IEnumerable Validate(ValidationContext validationContex yield return new ValidationResult($"{nameof(Directories)} cannot be empty"); } + foreach (var directory in Directories) + { + if (!Path.Exists(directory)) + { + yield return new ValidationResult($"Path {directory} not found"); + } + } + if (!EachDirectoryAsSeparate && string.IsNullOrEmpty(Name)) { yield return new ValidationResult($"{nameof(Name)} must be provided when {nameof(EachDirectoryAsSeparate)} is not set"); diff --git a/src/DependencyUpdated.Core/Interfaces/IProjectUpdater.cs b/src/DependencyUpdated.Core/Interfaces/IProjectUpdater.cs index 7e1ae42..5b78f44 100644 --- a/src/DependencyUpdated.Core/Interfaces/IProjectUpdater.cs +++ b/src/DependencyUpdated.Core/Interfaces/IProjectUpdater.cs @@ -5,11 +5,13 @@ namespace DependencyUpdated.Core.Interfaces; public interface IProjectUpdater { - Task> ExtractAllPackagesThatNeedToBeUpdated(IReadOnlyCollection fullPath, - Project projectConfiguration); + Task> ExtractAllPackages(IReadOnlyCollection fullPath); IReadOnlyCollection GetAllProjectFiles(string searchPath); IReadOnlyCollection HandleProjectUpdate(IReadOnlyCollection fullPath, ICollection dependenciesToUpdate); + + Task> GetVersions(DependencyDetails package, + Project projectConfiguration); } \ No newline at end of file diff --git a/src/DependencyUpdated.Core/Updater.cs b/src/DependencyUpdated.Core/Updater.cs index 063972c..2343508 100644 --- a/src/DependencyUpdated.Core/Updater.cs +++ b/src/DependencyUpdated.Core/Updater.cs @@ -1,12 +1,15 @@ using DependencyUpdated.Core.Config; using DependencyUpdated.Core.Interfaces; +using DependencyUpdated.Core.Models; +using DependencyUpdated.Core.Models.Enums; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Serilog; using System.IO.Enumeration; namespace DependencyUpdated.Core; -public sealed class Updater(IServiceProvider serviceProvider, IOptions config) +public sealed class Updater(IServiceProvider serviceProvider, IOptions config, ILogger logger) { public async Task DoUpdate() { @@ -21,20 +24,14 @@ public async Task DoUpdate() foreach (var directory in configEntry.Directories) { - if (!Path.Exists(directory)) - { - throw new FileNotFoundException("Search path not found", directory); - } - var projectFiles = updater.GetAllProjectFiles(directory); - var allDependenciesToUpdate = - await updater.ExtractAllPackagesThatNeedToBeUpdated(projectFiles, configEntry); - - if (allDependenciesToUpdate.Count == 0) + var allProjectDependencies = await updater.ExtractAllPackages(projectFiles); + if (allProjectDependencies.Count == 0) { continue; } + var allDependenciesToUpdate = await GetLatestVersions(allProjectDependencies, updater, configEntry); var uniqueListOfDependencies = allDependenciesToUpdate.DistinctBy(x => x.Name).ToList(); var projectName = ResolveProjectName(configEntry, directory); foreach (var group in configEntry.Groups) @@ -46,9 +43,8 @@ public async Task DoUpdate() continue; } - uniqueListOfDependencies.RemoveAll(x => FileSystemName.MatchesSimpleExpression(group, x.Name)); repositoryProvider.SwitchToUpdateBranch(repositoryPath, projectName, group); - + uniqueListOfDependencies.RemoveAll(x => FileSystemName.MatchesSimpleExpression(group, x.Name)); var allUpdates = updater.HandleProjectUpdate(projectFiles, matchesForGroup); if (allUpdates.Count == 0) { @@ -56,8 +52,7 @@ public async Task DoUpdate() } repositoryProvider.CommitChanges(repositoryPath, projectName, group); - await repositoryProvider.SubmitPullRequest(allUpdates.DistinctBy(x => x.PackageName).ToArray(), - projectName, group); + await repositoryProvider.SubmitPullRequest(allUpdates, projectName, group); repositoryProvider.SwitchToDefaultBranch(repositoryPath); } } @@ -73,4 +68,58 @@ private static string ResolveProjectName(Project project, string directory) return Path.GetFileName(directory); } + + private static DependencyDetails? GetMaxVersion(IReadOnlyCollection versions, + Version currentVersion, + Project projectConfiguration) + { + if (versions.Count == 0) + { + return null; + } + + if (projectConfiguration.Version == VersionUpdateType.Major) + { + return versions.MaxBy(x => x.Version); + } + + if (projectConfiguration.Version == VersionUpdateType.Minor) + { + return versions.Where(x => + x.Version.Major == currentVersion.Major && x.Version.Minor > currentVersion.Minor).Max(); + } + + if (projectConfiguration.Version == VersionUpdateType.Patch) + { + return versions.Where(x => + x.Version.Major == currentVersion.Major && x.Version.Minor == currentVersion.Minor && + x.Version.Build > currentVersion.Build).Max(); + } + + throw new NotSupportedException($"Version configuration {projectConfiguration.Version} is not supported"); + } + + private async Task> GetLatestVersions( + ICollection allDependenciesToCheck, + IProjectUpdater projectUpdater, Project projectConfiguration) + { + var returnList = new HashSet(); + foreach (var dependencyDetails in allDependenciesToCheck) + { + logger.Verbose("Processing {PackageName}:{PackageVersion}", dependencyDetails.Name, + dependencyDetails.Version); + var allVersions = await projectUpdater.GetVersions(dependencyDetails, projectConfiguration); + var latestVersion = GetMaxVersion(allVersions, dependencyDetails.Version, projectConfiguration); + if (latestVersion is null) + { + logger.Warning("{PacakgeName} unable to find in sources", dependencyDetails.Name); + continue; + } + + logger.Information("{PacakgeName} new version {Version} available", dependencyDetails.Name, latestVersion); + returnList.Add(dependencyDetails with { Version = latestVersion.Version }); + } + + return returnList; + } } \ No newline at end of file diff --git a/src/DependencyUpdated.Projects.DotNet/DotNetUpdater.cs b/src/DependencyUpdated.Projects.DotNet/DotNetUpdater.cs index 9726d6f..0482f08 100644 --- a/src/DependencyUpdated.Projects.DotNet/DotNetUpdater.cs +++ b/src/DependencyUpdated.Projects.DotNet/DotNetUpdater.cs @@ -1,7 +1,6 @@ using DependencyUpdated.Core.Config; using DependencyUpdated.Core.Interfaces; using DependencyUpdated.Core.Models; -using DependencyUpdated.Core.Models.Enums; using Microsoft.Extensions.Caching.Memory; using NuGet.Common; using NuGet.Configuration; @@ -34,51 +33,9 @@ public IReadOnlyCollection HandleProjectUpdate(IReadOnlyCollection return UpdateCsProj(fullPath, dependenciesToUpdate); } - public async Task> ExtractAllPackagesThatNeedToBeUpdated(IReadOnlyCollection fullPath, Project projectConfiguration) + public async Task> ExtractAllPackages(IReadOnlyCollection fullPath) { - var nugets = ParseCsproj(fullPath); - - var returnList = new List(); - foreach (var nuget in nugets) - { - logger.Verbose("Processing {PackageName}:{PackageVersion}", nuget.Name, nuget.Version); - var latestVersion = await GetLatestVersion(nuget, projectConfiguration); - if (latestVersion is null) - { - logger.Warning("{PacakgeName} unable to find in sources", nuget.Name); - continue; - } - - logger.Information("{PacakgeName} new version {Version} available", nuget.Name, latestVersion); - returnList.Add(nuget with { Version = latestVersion.Version }); - } - - return returnList; - } - - private static NuGetVersion? GetMaxVersion(IEnumerable versions, Version currentVersion, - Project projectConfiguration) - { - var baseQuery = versions.Where(x => !x.IsPrerelease); - if (projectConfiguration.Version == VersionUpdateType.Major) - { - return baseQuery.Max(); - } - - if (projectConfiguration.Version == VersionUpdateType.Minor) - { - return baseQuery.Where(x => - x.Version.Major == currentVersion.Major && x.Version.Minor > currentVersion.Minor).Max(); - } - - if (projectConfiguration.Version == VersionUpdateType.Patch) - { - return baseQuery.Where(x => - x.Version.Major == currentVersion.Major && x.Version.Minor == currentVersion.Minor && - x.Version.Build > currentVersion.Build).Max(); - } - - throw new NotSupportedException($"Version configuration {projectConfiguration.Version} is not supported"); + return await Task.FromResult(ParseCsproj(fullPath)); } private static HashSet ParseCsproj(IReadOnlyCollection paths) @@ -116,10 +73,12 @@ private static HashSet ParseCsproj(string path) return nugets; } - private async Task GetLatestVersion(DependencyDetails package, Project projectConfiguration) + public async Task> GetVersions(DependencyDetails package, + Project projectConfiguration) { - var existsInCache = memoryCache.TryGetValue(package.Name, out var cachedVersion); - if (existsInCache) + var existsInCache = + memoryCache.TryGetValue>(package.Name, out var cachedVersion); + if (existsInCache && cachedVersion is not null) { return cachedVersion; } @@ -138,7 +97,7 @@ private static HashSet ParseCsproj(string path) packageSources.Add(new PackageSource(projectConfigurationPath)); continue; } - + var setting = Settings.LoadSpecificSettings(Path.GetDirectoryName(projectConfigurationPath)!, Path.GetFileName(projectConfigurationPath)); var packageSourceProvider = new PackageSourceProvider(setting); @@ -150,7 +109,7 @@ private static HashSet ParseCsproj(string path) var sourceRepositoryProvider = new SourceRepositoryProvider(new PackageSourceProvider(NullSettings.Instance, packageSources), providers); var repositories = sourceRepositoryProvider.GetRepositories(); - var version = default(NuGetVersion?); + var allVersions = new List(); foreach (var repository in repositories) { var findPackageByIdResource = await repository.GetResourceAsync(); @@ -159,15 +118,15 @@ private static HashSet ParseCsproj(string path) new SourceCacheContext(), NullLogger.Instance, CancellationToken.None); - var maxVersion = GetMaxVersion(versions, package.Version, projectConfiguration); - if (version is null || (maxVersion is not null && maxVersion >= version)) - { - version = maxVersion; - } + allVersions.AddRange(versions.Where(x => !x.IsPrerelease)); } - memoryCache.Set(package.Name, version); - return version; + var result = allVersions + .DistinctBy(x => x.Version) + .Select(x => package with { Version = x.Version }) + .ToHashSet(); + memoryCache.Set(package.Name, result); + return result; } private IReadOnlyCollection UpdateCsProj(IReadOnlyCollection fullPaths, diff --git a/src/DependencyUpdated/DependencyUpdated.csproj b/src/DependencyUpdated/DependencyUpdated.csproj index 8580d05..724050f 100644 --- a/src/DependencyUpdated/DependencyUpdated.csproj +++ b/src/DependencyUpdated/DependencyUpdated.csproj @@ -33,7 +33,7 @@ Always - + diff --git a/tests/DependencyUpdated.Core.UnitTests/DependencyUpdated.Core.UnitTests.csproj b/tests/DependencyUpdated.Core.UnitTests/DependencyUpdated.Core.UnitTests.csproj new file mode 100644 index 0000000..930c5ce --- /dev/null +++ b/tests/DependencyUpdated.Core.UnitTests/DependencyUpdated.Core.UnitTests.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + diff --git a/tests/DependencyUpdated.Core.UnitTests/UpdaterTests.cs b/tests/DependencyUpdated.Core.UnitTests/UpdaterTests.cs new file mode 100644 index 0000000..7431374 --- /dev/null +++ b/tests/DependencyUpdated.Core.UnitTests/UpdaterTests.cs @@ -0,0 +1,256 @@ +using DependencyUpdated.Core.Config; +using DependencyUpdated.Core.Interfaces; +using DependencyUpdated.Core.Models; +using DependencyUpdated.Core.Models.Enums; +using FluentAssertions.Execution; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using NSubstitute; +using NSubstitute.ReceivedExtensions; +using Serilog; +using Xunit; + +namespace DependencyUpdated.Core.UnitTests; + +public class UpdaterTests +{ + private readonly IServiceProvider _serviceProvider; + private readonly IProjectUpdater _projectUpdater; + private readonly IRepositoryProvider _repositoryProvider; + private readonly IOptions _config; + private readonly ILogger _logger; + private readonly Updater _target; + private readonly string _currentDir; + + public UpdaterTests() + { + _config = new OptionsWrapper(new UpdaterConfig() + { + RepositoryType = RepositoryType.AzureDevOps, + Projects = + [ + new() + { + Name = "TestProjectName", + Version = VersionUpdateType.Major, + Directories = ["TestDir"], + Type = ProjectType.DotNet, + } + ] + }); + _config.Value.ApplyDefaultValues(); + _currentDir = Environment.CurrentDirectory; + _repositoryProvider = Substitute.For(); + _projectUpdater = Substitute.For(); + _serviceProvider = new ServiceCollection() + .AddKeyedSingleton(_config.Value.Projects[0].Type, _projectUpdater) + .AddKeyedSingleton(_config.Value.RepositoryType, _repositoryProvider) + .BuildServiceProvider(); + _logger = Substitute.For(); + _target = new Updater(_serviceProvider, _config, _logger); + } + + [Fact] + public async Task Update_Should_UpdateOnlyMinorVersion() + { + // Arrange + _config.Value.Projects[0].Version = VersionUpdateType.Minor; + var projectList = new List() { "TestProjectFile" }; + _projectUpdater + .GetAllProjectFiles(_config.Value.Projects[0].Directories[0]) + .Returns(projectList); + var projectDependencies = + new List() { new("TestDependency", new Version(1, 0, 0)), }; + _projectUpdater.ExtractAllPackages(projectList).Returns(projectDependencies); + _projectUpdater.GetVersions(projectDependencies[0], _config.Value.Projects[0]) + .Returns(new List + { + new(projectDependencies[0].Name, new Version(2, 0, 0)), + new(projectDependencies[0].Name, new Version(1, 1, 0)), + new(projectDependencies[0].Name, new Version(1, 0, 2)), + }); + + var expectedDependencyUpdate = new List(new[] + { + new DependencyDetails(projectDependencies[0].Name, new Version(1, 1, 0)) + }); + var expectedUpdateResult = new List { new(projectDependencies[0].Name, "1.0.0", "1.1.0") }; + _projectUpdater + .HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))) + .Returns(expectedUpdateResult); + + + // Act + await _target.DoUpdate(); + + // Assert + using (new AssertionScope()) + { + _projectUpdater.Received(1).HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))); + _repositoryProvider.Received(1).CommitChanges(_currentDir, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + await _repositoryProvider.Received(1).SubmitPullRequest(expectedUpdateResult, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + } + } + + [Fact] + public async Task Update_Should_UpdateOnlyPatchVersion() + { + // Arrange + _config.Value.Projects[0].Version = VersionUpdateType.Patch; + var projectList = new List() { "TestProjectFile" }; + _projectUpdater + .GetAllProjectFiles(_config.Value.Projects[0].Directories[0]) + .Returns(projectList); + var projectDependencies = + new List() { new("TestDependency", new Version(1, 0, 0)), }; + _projectUpdater.ExtractAllPackages(projectList).Returns(projectDependencies); + _projectUpdater.GetVersions(projectDependencies[0], _config.Value.Projects[0]) + .Returns(new List + { + new(projectDependencies[0].Name, new Version(2, 0, 0)), + new(projectDependencies[0].Name, new Version(1, 1, 0)), + new(projectDependencies[0].Name, new Version(1, 0, 2)), + }); + + var expectedDependencyUpdate = new List(new[] + { + new DependencyDetails(projectDependencies[0].Name, new Version(1, 0, 2)) + }); + var expectedUpdateResult = new List { new(projectDependencies[0].Name, "1.0.0", "1.0.2") }; + _projectUpdater + .HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))) + .Returns(expectedUpdateResult); + + + // Act + await _target.DoUpdate(); + + // Assert + using (new AssertionScope()) + { + _projectUpdater.Received(1).HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))); + _repositoryProvider.Received(1).CommitChanges(_currentDir, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + await _repositoryProvider.Received(1).SubmitPullRequest(expectedUpdateResult, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + } + } + + [Fact] + public async Task Update_Should_UpdateMajorVersion() + { + // Arrange + _config.Value.Projects[0].Version = VersionUpdateType.Major; + var projectList = new List() { "TestProjectFile" }; + _projectUpdater + .GetAllProjectFiles(_config.Value.Projects[0].Directories[0]) + .Returns(projectList); + var projectDependencies = + new List() { new("TestDependency", new Version(1, 0, 0)), }; + _projectUpdater.ExtractAllPackages(projectList).Returns(projectDependencies); + _projectUpdater.GetVersions(projectDependencies[0], _config.Value.Projects[0]) + .Returns(new List + { + new(projectDependencies[0].Name, new Version(2, 0, 0)), + new(projectDependencies[0].Name, new Version(1, 1, 0)), + new(projectDependencies[0].Name, new Version(1, 0, 2)), + }); + + var expectedDependencyUpdate = new List(new[] + { + new DependencyDetails(projectDependencies[0].Name, new Version(2, 0, 0)) + }); + var expectedUpdateResult = new List { new(projectDependencies[0].Name, "1.0.0", "2.0.0") }; + _projectUpdater + .HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))) + .Returns(expectedUpdateResult); + + + // Act + await _target.DoUpdate(); + + // Assert + using (new AssertionScope()) + { + _projectUpdater.Received(1).HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))); + _repositoryProvider.Received(1).CommitChanges(_currentDir, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + await _repositoryProvider.Received(1).SubmitPullRequest(expectedUpdateResult, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + } + } + + [Fact] + public async Task Update_Should_FilterGroups() + { + // Arrange + _config.Value.Projects[0].Version = VersionUpdateType.Major; + _config.Value.Projects[0].Groups[0] = "Test.*"; + var projectList = new List() { "TestProjectFile" }; + _projectUpdater + .GetAllProjectFiles(_config.Value.Projects[0].Directories[0]) + .Returns(projectList); + var projectDependencies = + new List() + { + new("TestDependency", new Version(1, 0, 0)), + new("Test.Dependency", new Version(1, 0, 0)), + }; + _projectUpdater.ExtractAllPackages(projectList).Returns(projectDependencies); + _projectUpdater.GetVersions(projectDependencies[0], _config.Value.Projects[0]) + .Returns(new List + { + new(projectDependencies[0].Name, new Version(2, 0, 0)), + new(projectDependencies[0].Name, new Version(1, 1, 0)), + new(projectDependencies[0].Name, new Version(1, 0, 2)), + }); + _projectUpdater.GetVersions(projectDependencies[1], _config.Value.Projects[0]) + .Returns(new List + { + new(projectDependencies[1].Name, new Version(2, 0, 0)), + new(projectDependencies[1].Name, new Version(1, 1, 0)), + new(projectDependencies[1].Name, new Version(1, 0, 2)), + }); + + var expectedDependencyUpdate = new List(new[] + { + new DependencyDetails(projectDependencies[1].Name, new Version(2, 0, 0)) + }); + var expectedUpdateResult = new List { new(projectDependencies[1].Name, "1.0.0", "2.0.0") }; + _projectUpdater + .HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))) + .Returns(expectedUpdateResult); + + + // Act + await _target.DoUpdate(); + + // Assert + using (new AssertionScope()) + { + _projectUpdater.Received(1).HandleProjectUpdate(projectList, + Arg.Is>(detailsCollection => + detailsCollection.SequenceEqual(expectedDependencyUpdate))); + _repositoryProvider.Received(1).CommitChanges(_currentDir, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + await _repositoryProvider.Received(1).SubmitPullRequest(expectedUpdateResult, _config.Value.Projects[0].Name, + _config.Value.Projects[0].Groups[0]); + } + } +} \ No newline at end of file diff --git a/tests/DependencyUpdated.Projects.DotNet.UnitTests/DotNetUpdaterTests.cs b/tests/DependencyUpdated.Projects.DotNet.UnitTests/DotNetUpdaterTests.cs index ee85b09..d4753bf 100644 --- a/tests/DependencyUpdated.Projects.DotNet.UnitTests/DotNetUpdaterTests.cs +++ b/tests/DependencyUpdated.Projects.DotNet.UnitTests/DotNetUpdaterTests.cs @@ -43,7 +43,7 @@ public void GetAllProjectFiles_Should_ReturnAllProjects() } [Fact] - public async Task ExtractAllPackagesThatNeedToBeUpdated_Should_UpdatePatchVersion() + public async Task ExtractAllPackages_Should_ReturnPackagesFromCsProjFile() { // Arrange var path = Path.Combine("Projects", "SampleProject.csproj"); @@ -51,55 +51,11 @@ public async Task ExtractAllPackagesThatNeedToBeUpdated_Should_UpdatePatchVersio config.ApplyDefaultValue(); var expectedResult = new List() { - new("Serilog", new Version(3,0,1, 0)) + new("Serilog", new Version(3,0,0, 0)) }; // Act - var packages = await _target.ExtractAllPackagesThatNeedToBeUpdated(new[] { path }, config); - - // Assert - using (new AssertionScope()) - { - packages.Should().BeEquivalentTo(expectedResult); - } - } - - [Fact] - public async Task ExtractAllPackagesThatNeedToBeUpdated_Should_UpdateMinorVersion() - { - // Arrange - var path = Path.Combine("Projects", "SampleProject.csproj"); - var config = new Project() { Version = VersionUpdateType.Minor, Type = ProjectType.DotNet }; - config.ApplyDefaultValue(); - var expectedResult = new List() - { - new("Serilog", new Version(3,1,1, 0)) - }; - - // Act - var packages = await _target.ExtractAllPackagesThatNeedToBeUpdated(new[] { path }, config); - - // Assert - using (new AssertionScope()) - { - packages.Should().BeEquivalentTo(expectedResult); - } - } - - [Fact] - public async Task ExtractAllPackagesThatNeedToBeUpdated_Should_UpdateMajorVersion() - { - // Arrange - var path = Path.Combine("Projects", "SampleProject.csproj"); - var config = new Project() { Version = VersionUpdateType.Major, Type = ProjectType.DotNet }; - config.ApplyDefaultValue(); - var expectedResult = new List() - { - new("Serilog", new Version(4,0,1, 0)) - }; - - // Act - var packages = await _target.ExtractAllPackagesThatNeedToBeUpdated(new[] { path }, config); + var packages = await _target.ExtractAllPackages(new[] { path }); // Assert using (new AssertionScope())