public async Task WhenPatchVersionChangesAreAllowed(VersionChange dataRange,
                                                            int expectedMajor, int expectedMinor, int expectedPatch)
        {
            var expectedUpdate    = new NuGetVersion(expectedMajor, expectedMinor, expectedPatch);
            var resultPackages    = PackageVersionTestData.VersionsFor(dataRange);
            var allVersionsLookup = MockVersionLookup(resultPackages);

            IApiPackageLookup lookup = new ApiPackageLookup(allVersionsLookup);

            var updates = await lookup.FindVersionUpdate(CurrentVersion123("TestPackage"),
                                                         VersionChange.Patch);

            AssertPackagesIdentityIs(updates, "TestPackage");
            Assert.That(updates.Selected().Identity.Version, Is.EqualTo(expectedUpdate));
            Assert.That(updates.Major.Identity.Version, Is.EqualTo(HighestVersion(resultPackages)));
        }
        public async Task WhenThereIsOnlyOneVersion()
        {
            var resultPackages = new List <PackageSearchMedatadata>
            {
                PackageVersionTestData.PackageVersion(2, 3, 4)
            };

            var allVersionsLookup = MockVersionLookup(resultPackages);

            IApiPackageLookup lookup = new ApiPackageLookup(allVersionsLookup);

            var updates = await lookup.FindVersionUpdate(CurrentVersion123("TestPackage"), VersionChange.Major);

            Assert.That(updates, Is.Not.Null);

            AssertPackagesIdentityIs(updates, "TestPackage");
            Assert.That(updates.Major.Identity.Version, Is.EqualTo(new NuGetVersion(2, 3, 4)));
            Assert.That(updates.Selected().Identity.Version, Is.EqualTo(new NuGetVersion(2, 3, 4)));
        }