Browse Source

Request latest package versions from NuGet feed.

Use $filter=IsLatestVersion when requesting packages from the online NuGet feed. Reduces the number of requests sent and the results are displayed quicker.
pull/28/head
Matt Ward 13 years ago
parent
commit
d888ef5555
  1. 7
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
  3. 14
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  4. 25
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

7
src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

@ -38,7 +38,12 @@ namespace ICSharpCode.PackageManagement @@ -38,7 +38,12 @@ namespace ICSharpCode.PackageManagement
if (repository == null) {
throw new ApplicationException(errorMessage);
}
return repository.GetPackages();
return repository.GetPackages().Where(package => package.IsLatestVersion);
}
public IQueryable<IPackage> CallGetPackagesFromPackageSource()
{
return GetPackagesFromPackageSource();
}
/// <summary>

1
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs

@ -37,6 +37,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -37,6 +37,7 @@ namespace ICSharpCode.PackageManagement.Design
this.Description = String.Empty;
this.Version = new SemanticVersion(version);
this.Listed = true;
this.IsLatestVersion = true;
}
public static FakePackage CreatePackageWithVersion(string version)

14
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -164,15 +164,23 @@ namespace ICSharpCode.PackageManagement @@ -164,15 +164,23 @@ namespace ICSharpCode.PackageManagement
IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults()
{
if (allPackages == null) {
IQueryable<IPackage> packages = GetAllPackages();
packages = OrderPackages(packages);
packages = FilterPackagesBySearchCriteria(packages);
IQueryable<IPackage> packages = GetPackagesFromPackageSource();
TotalItems = packages.Count();
allPackages = GetFilteredPackagesBeforePagingResults(packages);
}
return allPackages;
}
/// <summary>
/// Returns the queryable object that will be used to query the NuGet online feed.
/// </summary>
public IQueryable<IPackage> GetPackagesFromPackageSource()
{
IQueryable<IPackage> packages = GetAllPackages();
packages = OrderPackages(packages);
return FilterPackagesBySearchCriteria(packages);
}
protected virtual IQueryable<IPackage> OrderPackages(IQueryable<IPackage> packages)
{
return packages

25
src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -364,7 +365,7 @@ namespace PackageManagement.Tests @@ -364,7 +365,7 @@ namespace PackageManagement.Tests
{
CreateViewModel();
var releasePackage = new FakePackage("Test", "1.0.0.0");
var releasePackage = new FakePackage("Test", "1.1.0.0");
var prereleasePackage = new FakePackage("Test", "1.1.0-alpha");
var packages = new FakePackage[] {
@ -406,5 +407,27 @@ namespace PackageManagement.Tests @@ -406,5 +407,27 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
[Test]
public void GetPackagesFromPackageSource_RepositoryHasThreePackagesWithSameIdButDifferentVersions_LatestPackageVersionOnlyRequestedFromPackageSource()
{
CreateViewModel();
var package1 = new FakePackage("Test", "0.1.0.0") { IsLatestVersion = false };
var package2 = new FakePackage("Test", "0.2.0.0") { IsLatestVersion = false };
var package3 = new FakePackage("Test", "0.3.0.0") { IsLatestVersion = true };
var packages = new FakePackage[] {
package1, package2, package3
};
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
IList<IPackage> allPackages = viewModel.GetPackagesFromPackageSource().ToList();
var expectedPackages = new FakePackage[] {
package3
};
PackageCollectionAssert.AreEqual(expectedPackages, allPackages);
}
}
}

Loading…
Cancel
Save