public async Task GivenPackageWithNoMatchingVersion_NoVersionIsFound()
        {
            var parameters = new UpdaterParameters
            {
                TargetVersions = { "stable" },
            };

            var packageVersion = "1.0-beta.1";
            var packageId      = "nventive.NuGet.Updater";

            var reference = new PackageReference(packageId, packageVersion);

            var version = await reference.GetLatestVersion(CancellationToken.None, parameters);

            Assert.IsNull(version);
        }
        /// <summary>
        /// Gets the latest version for the given reference by looking up first in a list of known packages.
        /// Useful in the cases where refernces to multiple versions of the same packages are found.
        /// </summary>
        public static async Task <FeedVersion> GetLatestVersion(
            this PackageReference reference,
            CancellationToken ct,
            IEnumerable <UpdaterPackage> knownPackages,
            UpdaterParameters parameters
            )
        {
            var knownVersion = knownPackages.FirstOrDefault(p => p.PackageId == reference.Identity.Id)?.Version;

            if (knownVersion == null)
            {
                knownVersion = await reference.GetLatestVersion(ct, parameters);
            }

            return(knownVersion);
        }
        public async Task GivenPackageWithMatchingVersion_VersionIsFound()
        {
            var parameters = new UpdaterParameters
            {
                TargetVersions = { "beta" },
                Feeds          = { TestFeed },
            };

            var packageVersion = "1.0-beta.1";
            var packageId      = "nventive.NuGet.Updater";

            var reference = new PackageReference(packageId, packageVersion);

            var version = await reference.GetLatestVersion(CancellationToken.None, parameters);

            Assert.IsNotNull(version);
            Assert.AreEqual(version.Version.OriginalVersion, packageVersion);
        }