public async Task GetPackagesWithUpdatesAsync_WithMultipleProjects_RetrievesNoUpdates() { // Arrange var testPackageIdentity = new PackageCollectionItem("FakePackage", NuGetVersion.Parse("1.0.0"), installedReferences: null); var serviceBroker = new Mock <IServiceBroker>(); Mock <INuGetProjectManagerService> projectManagerService = SetupProjectManagerService(serviceBroker); IProjectContextInfo projectA = SetupProject(projectManagerService, "FakePackage", "2.0.1"); IProjectContextInfo projectB = SetupProject(projectManagerService, "FakePackage", "1.0.1", "[1,2)"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); var _target = new UpdatePackageFeed( serviceBroker.Object, new[] { testPackageIdentity }, _metadataProvider, new[] { projectA, projectB }); // Act IEnumerable <IPackageSearchMetadata> packages = await _target.GetPackagesWithUpdatesAsync( searchText : "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); // Assert Assert.Empty(packages); }
public async Task GetPackagesWithUpdatesAsync_WithMultipleProjects_RetrievesSingleUpdate3() { // Arrange var testPackageIdentity = new PackageIdentity("FakePackage", NuGetVersion.Parse("1.0.0")); // Only one project needs to be updated // projectA: 2.0.1 => None // projectB: 1.0.0 => 1.0.1 var projectA = SetupProject("FakePackage", "2.0.1"); var projectB = SetupProject("FakePackage", "1.0.0", "[1,2)"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); var _target = new UpdatePackageFeed(new[] { testPackageIdentity }, _metadataProvider, new[] { projectA, projectB }, null, new TestLogger()); // Act var packages = await _target.GetPackagesWithUpdatesAsync( "fake", new SearchFilter(), CancellationToken.None); // Assert // Should retrieve a single update item with the lowest version and full list of available versions Assert.Single(packages); var updateCandidate = packages.Single(); Assert.Equal("1.0.1", updateCandidate.Identity.Version.ToString()); var actualVersions = await updateCandidate.GetVersionsAsync(); Assert.NotEmpty(actualVersions); Assert.Equal( new[] { "2.0.1", "2.0.0", "1.0.1", "1.0.0", "0.0.1" }, actualVersions.Select(v => v.Version.ToString()).ToArray()); }
public async Task GetPackagesWithUpdatesAsync_WithAllowedVersions_RetrievesSingleUpdate() { // Arrange var testPackageIdentity = new PackageIdentity("FakePackage", new NuGetVersion("1.0.0")); var projectA = SetupProject("FakePackage", "1.0.0", "[1,2)"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); var _target = new UpdatePackageFeed(new[] { testPackageIdentity }, _metadataProvider, new[] { projectA }, null, new TestLogger()); // Act var packages = await _target.GetPackagesWithUpdatesAsync( "fake", new SearchFilter(), CancellationToken.None); // Assert Assert.Single(packages); var updateCandidate = packages.Single(); Assert.Equal("1.0.1", updateCandidate.Identity.Version.ToString()); var actualVersions = await updateCandidate.GetVersionsAsync(); Assert.NotEmpty(actualVersions); Assert.Equal( new[] { "2.0.1", "2.0.0", "1.0.1", "1.0.0", "0.0.1" }, actualVersions.Select(v => v.Version.ToString()).ToArray()); }
public async Task GetPackagesWithUpdatesAsync_WithMultiplePackages_SortedByPackageId() { // Arrange var testPackageIdentity = new PackageCollectionItem("FakePackage", NuGetVersion.Parse("1.0.0"), null); var testPackageIdentity2 = new PackageCollectionItem("AFakePackage", NuGetVersion.Parse("1.0.0"), null); var testPackageIdentity3 = new PackageCollectionItem("ZFakePackage", NuGetVersion.Parse("1.0.0"), null); var projectA = SetupProject("FakePackage", "1.0.0"); var projectB = SetupProject("ZFakePackage", "1.0.0"); var projectC = SetupProject("AFakePackage", "1.0.0"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); SetupRemotePackageMetadata("ZFakePackage", "0.0.1", "1.0.0", "4.0.0"); SetupRemotePackageMetadata("AFakePackage", "1.0.0", "3.0.1"); var _target = new UpdatePackageFeed(new[] { testPackageIdentity, testPackageIdentity2, testPackageIdentity3 } , _metadataProvider, new[] { projectA, projectB, projectC }, null, new TestLogger()); // Act var packages = await _target.GetPackagesWithUpdatesAsync( "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); var actualPackageIds = packages.Select(p => p.Identity.Id); // Assert var expectedPackageIdsSorted = new List <string>() { "AFakePackage", "FakePackage", "ZFakePackage" }; Assert.Equal(expectedPackageIdsSorted, actualPackageIds); //Equal considers sort order of collections. }
public async Task GetPackagesWithUpdatesAsync_WithHttpCache_RetrievesUpdate() { // Arrange var testPackageIdentity = new PackageCollectionItem("FakePackage", new NuGetVersion("1.0.0"), null); var serviceBroker = new Mock <IServiceBroker>(); Mock <INuGetProjectManagerService> projectManagerService = SetupProjectManagerService(serviceBroker); IProjectContextInfo projectA = SetupProject(projectManagerService, "FakePackage", "1.0.0"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.0"); var _target = new UpdatePackageFeed( serviceBroker.Object, new[] { testPackageIdentity }, _metadataProvider, new[] { projectA }, optionalCachedUpdates: null, NullLogger.Instance); // Act IEnumerable <IPackageSearchMetadata> packages = await _target.GetPackagesWithUpdatesAsync( searchText : "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); Assert.Single(packages); IPackageSearchMetadata updateCandidate = packages.Single(); Assert.Equal("2.0.0", updateCandidate.Identity.Version.ToString()); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); packages = await _target.GetPackagesWithUpdatesAsync( searchText : "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); Assert.Single(packages); updateCandidate = packages.Single(); Assert.Equal("2.0.1", updateCandidate.Identity.Version.ToString()); IEnumerable <VersionInfo> actualVersions = await updateCandidate.GetVersionsAsync(); Assert.NotEmpty(actualVersions); Assert.Equal( new[] { "2.0.1", "2.0.0", "1.0.1", "1.0.0", "0.0.1" }, actualVersions.Select(v => v.Version.ToString()).ToArray()); }
public async Task GetPackagesWithUpdatesAsync_WithMultipleProjects_RetrievesNoUpdates() { // Arrange var testPackageIdentity = new PackageIdentity("FakePackage", NuGetVersion.Parse("1.0.0")); var projectA = SetupProject("FakePackage", "2.0.1"); var projectB = SetupProject("FakePackage", "1.0.1", "[1,2)"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); var _target = new UpdatePackageFeed(new[] { testPackageIdentity }, _metadataProvider, new[] { projectA, projectB }, null, new TestLogger()); // Act var packages = await _target.GetPackagesWithUpdatesAsync( "fake", new SearchFilter(), CancellationToken.None); // Assert Assert.Empty(packages); }
public async Task GetPackagesWithUpdatesAsync_WithMultipleProjects_RetrievesSingleUpdate3() { // Arrange var testPackageIdentity = new PackageCollectionItem("FakePackage", NuGetVersion.Parse("1.0.0"), null); var serviceBroker = new Mock <IServiceBroker>(); Mock <INuGetProjectManagerService> projectManagerService = SetupProjectManagerService(serviceBroker); // Only one project needs to be updated // projectA: 2.0.1 => None // projectB: 1.0.0 => 1.0.1 IProjectContextInfo projectA = SetupProject(projectManagerService, "FakePackage", "2.0.1"); IProjectContextInfo projectB = SetupProject(projectManagerService, "FakePackage", "1.0.0", "[1,2)"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); var _target = new UpdatePackageFeed( serviceBroker.Object, new[] { testPackageIdentity }, _metadataProvider, new[] { projectA, projectB }, optionalCachedUpdates: null, NullLogger.Instance); // Act IEnumerable <IPackageSearchMetadata> packages = await _target.GetPackagesWithUpdatesAsync( searchText : "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); // Assert // Should retrieve a single update item with the lowest version and full list of available versions Assert.Single(packages); IPackageSearchMetadata updateCandidate = packages.Single(); Assert.Equal("1.0.1", updateCandidate.Identity.Version.ToString()); IEnumerable <VersionInfo> actualVersions = await updateCandidate.GetVersionsAsync(); Assert.NotEmpty(actualVersions); Assert.Equal( new[] { "2.0.1", "2.0.0", "1.0.1", "1.0.0", "0.0.1" }, actualVersions.Select(v => v.Version.ToString()).ToArray()); }
public async Task GetPackagesWithUpdatesAsync_WithMultiplePackages_SortedByPackageId() { // Arrange var testPackageIdentity = new PackageCollectionItem("FakePackage", NuGetVersion.Parse("1.0.0"), null); var testPackageIdentity2 = new PackageCollectionItem("AFakePackage", NuGetVersion.Parse("1.0.0"), null); var testPackageIdentity3 = new PackageCollectionItem("ZFakePackage", NuGetVersion.Parse("1.0.0"), null); var serviceBroker = new Mock <IServiceBroker>(); Mock <INuGetProjectManagerService> projectManagerService = SetupProjectManagerService(serviceBroker); IProjectContextInfo projectA = SetupProject(projectManagerService, "FakePackage", "1.0.0"); IProjectContextInfo projectB = SetupProject(projectManagerService, "ZFakePackage", "1.0.0"); IProjectContextInfo projectC = SetupProject(projectManagerService, "AFakePackage", "1.0.0"); SetupRemotePackageMetadata("FakePackage", "0.0.1", "1.0.0", "2.0.1", "2.0.0", "1.0.1"); SetupRemotePackageMetadata("ZFakePackage", "0.0.1", "1.0.0", "4.0.0"); SetupRemotePackageMetadata("AFakePackage", "1.0.0", "3.0.1"); var _target = new UpdatePackageFeed( serviceBroker.Object, new[] { testPackageIdentity, testPackageIdentity2, testPackageIdentity3 }, _metadataProvider, new[] { projectA, projectB, projectC }, optionalCachedUpdates: null, NullLogger.Instance); // Act IEnumerable <IPackageSearchMetadata> packages = await _target.GetPackagesWithUpdatesAsync( searchText : "fake", new SearchFilter(includePrerelease : false), CancellationToken.None); IEnumerable <string> actualPackageIds = packages.Select(p => p.Identity.Id); // Assert var expectedPackageIdsSorted = new List <string>() { "AFakePackage", "FakePackage", "ZFakePackage" }; Assert.Equal(expectedPackageIdsSorted, actualPackageIds); //Equal considers sort order of collections. }