Browse Source

When searching for packages retrieve the total number of filtered packages and not the total number of packages in the repository.

pull/15/head
mrward 15 years ago
parent
commit
af8c908abb
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  2. 28
      src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs

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

@ -132,6 +132,7 @@ namespace ICSharpCode.PackageManagement
{ {
if (allPackages == null) { if (allPackages == null) {
IQueryable<IPackage> packages = GetAllPackages(); IQueryable<IPackage> packages = GetAllPackages();
packages = packages.Find(searchTerms);
pages.TotalItems = packages.Count(); pages.TotalItems = packages.Count();
allPackages = GetFilteredPackagesBeforePagingResults(packages); allPackages = GetFilteredPackagesBeforePagingResults(packages);
} }
@ -152,7 +153,6 @@ namespace ICSharpCode.PackageManagement
/// </summary> /// </summary>
protected virtual IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages) protected virtual IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
{ {
allPackages = allPackages.Find(searchTerms);
IEnumerable<IPackage> bufferedPackages = GetBufferedPackages(allPackages); IEnumerable<IPackage> bufferedPackages = GetBufferedPackages(allPackages);
return bufferedPackages; return bufferedPackages;
} }

28
src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs

@ -683,5 +683,33 @@ namespace PackageManagement.Tests
Assert.IsFalse(paged); Assert.IsFalse(paged);
} }
[Test]
public void Search_BeforeSearchFivePagesOfPackagesShownAndSearchReturnsTwoPages_TwoPagesShownAfterSearch()
{
CreateViewModel();
viewModel.IsSearchable = true;
viewModel.PageSize = 2;
viewModel.MaximumSelectablePages = 5;
viewModel.AddSixFakePackages();
viewModel.FakePackages.Add(new FakePackage("SearchedForId1"));
viewModel.FakePackages.Add(new FakePackage("SearchedForId2"));
viewModel.FakePackages.Add(new FakePackage("SearchedForId3"));
viewModel.ReadPackages();
ObservableCollection<Page> pages = viewModel.Pages;
viewModel.SearchTerms = "SearchedForId";
viewModel.Search();
var expectedPages = new Page[] {
new Page() { Number = 1, IsSelected = true },
new Page() { Number = 2 }
};
PageCollectionAssert.AreEqual(expectedPages, pages);
}
} }
} }

Loading…
Cancel
Save