Browse Source

Do not send empty search criteria in http request to NuGet repository.

pull/15/head
mrward 15 years ago
parent
commit
a7dd797c87
  1. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  2. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs
  3. 40
      src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs

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

@ -199,7 +199,7 @@ namespace ICSharpCode.PackageManagement
if (allPackages == null) { if (allPackages == null) {
IQueryable<IPackage> packages = GetAllPackages(); IQueryable<IPackage> packages = GetAllPackages();
packages = OrderPackages(packages); packages = OrderPackages(packages);
packages = packages.Find(searchTerms); packages = FilterPackagesBySearchCriteria(packages);
totalItems = packages.Count(); totalItems = packages.Count();
allPackages = GetFilteredPackagesBeforePagingResults(packages); allPackages = GetFilteredPackagesBeforePagingResults(packages);
} }
@ -212,6 +212,25 @@ namespace ICSharpCode.PackageManagement
.OrderBy(package => package.Id); .OrderBy(package => package.Id);
} }
IQueryable<IPackage> FilterPackagesBySearchCriteria(IQueryable<IPackage> packages)
{
string searchCriteria = GetSearchCriteria();
return FilterPackagesBySearchCriteria(packages, searchCriteria);
}
string GetSearchCriteria()
{
if (String.IsNullOrWhiteSpace(searchTerms)) {
return null;
}
return searchTerms;
}
protected virtual IQueryable<IPackage> FilterPackagesBySearchCriteria(IQueryable<IPackage> packages, string searchCriteria)
{
return packages.Find(searchCriteria);
}
IEnumerable<IPackage> GetPackagesForSelectedPage(IEnumerable<IPackage> allPackages) IEnumerable<IPackage> GetPackagesForSelectedPage(IEnumerable<IPackage> allPackages)
{ {
int packagesToSkip = pages.ItemsBeforeFirstPage; int packagesToSkip = pages.ItemsBeforeFirstPage;

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs

@ -18,6 +18,7 @@ namespace PackageManagement.Tests.Helpers
public List<FakePackage> FakePackages = new List<FakePackage>(); public List<FakePackage> FakePackages = new List<FakePackage>();
public int GetAllPackagesCallCount; public int GetAllPackagesCallCount;
public int PageCountBeforePackagesFiltered; public int PageCountBeforePackagesFiltered;
public string SearchCriteriaPassedToFilterPackagesBySearchCriteria;
public TestablePackagesViewModel() public TestablePackagesViewModel()
: this(new FakePackageManagementService()) : this(new FakePackageManagementService())
@ -88,5 +89,11 @@ namespace PackageManagement.Tests.Helpers
{ {
AddFakePackages(howMany: 3); AddFakePackages(howMany: 3);
} }
protected override IQueryable<IPackage> FilterPackagesBySearchCriteria(IQueryable<IPackage> packages, string searchTerms)
{
SearchCriteriaPassedToFilterPackagesBySearchCriteria = searchTerms;
return base.FilterPackagesBySearchCriteria(packages, searchTerms);
}
} }
} }

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

@ -1195,5 +1195,45 @@ namespace PackageManagement.Tests
Assert.AreEqual(1, viewModel.PackageViewModels.Count); Assert.AreEqual(1, viewModel.PackageViewModels.Count);
} }
[Test]
public void Search_RepositoryHasPackageWithIdOfEmptyString_SearchCriteriaUsedIsNull()
{
CreateViewModel();
viewModel.PageSize = 2;
viewModel.FakePackages.Add(new FakePackage() {
Id = "",
Description = "abc"
});
taskFactory.RunTasksSynchronously = true;
viewModel.ReadPackages();
ClearReadPackagesTasks();
viewModel.SearchTerms = "";
viewModel.Search();
Assert.IsNull(viewModel.SearchCriteriaPassedToFilterPackagesBySearchCriteria);
}
[Test]
public void Search_RepositoryHasPackageWithIdOfWhitespaceString_SearchCriteriaUsedIsNull()
{
CreateViewModel();
viewModel.PageSize = 2;
viewModel.FakePackages.Add(new FakePackage() {
Id = "",
Description = "abc"
});
taskFactory.RunTasksSynchronously = true;
viewModel.ReadPackages();
ClearReadPackagesTasks();
viewModel.SearchTerms = " ";
viewModel.Search();
Assert.IsNull(viewModel.SearchCriteriaPassedToFilterPackagesBySearchCriteria);
}
} }
} }

Loading…
Cancel
Save