示例#1
0
        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.
        }
示例#5
0
        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);
        }
示例#7
0
        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());
        }
示例#8
0
        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.
        }