diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs index efdc1c70af..fdddd9b806 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs @@ -202,6 +202,7 @@ namespace ICSharpCode.PackageManagement { if (allPackages == null) { IQueryable packages = GetAllPackages(); + packages = OrderPackages(packages); packages = packages.Find(searchTerms); totalItems = packages.Count(); allPackages = GetFilteredPackagesBeforePagingResults(packages); @@ -209,6 +210,12 @@ namespace ICSharpCode.PackageManagement return allPackages; } + IQueryable OrderPackages(IQueryable packages) + { + return packages + .OrderBy(package => package.Id); + } + IEnumerable GetPackagesForSelectedPage(IEnumerable allPackages) { int packagesToSkip = pages.ItemsBeforeFirstPage; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs index a7f6affcf8..5044b1102c 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs @@ -41,7 +41,7 @@ namespace PackageManagement.Tests.Helpers AddFakePackage("Test"); } - void AddFakePackage(string packageId) + public void AddFakePackage(string packageId) { FakePackage package = CreateFakePackage(packageId); FakePackages.Add(package); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs index 962560d89a..0ea8131633 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs @@ -1119,5 +1119,27 @@ namespace PackageManagement.Tests Assert.IsFalse(viewModel.HasError); } + + [Test] + public void ReadPackages_PackagesReturnedNotSortedFromRepository_PackagesDisplayedSortedById() + { + CreateViewModel(); + viewModel.AddFakePackage("Z"); + viewModel.AddFakePackage("C"); + viewModel.AddFakePackage("A"); + viewModel.AddFakePackage("B"); + viewModel.ReadPackages(); + + CompleteReadPackagesTask(); + + var expectedPackages = new FakePackage[] { + viewModel.FakePackages[2], + viewModel.FakePackages[3], + viewModel.FakePackages[1], + viewModel.FakePackages[0] + }; + + PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); + } } }