diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs index 664b5c0e8e..fb54cff524 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs @@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement { recentPackageRepository = packageManagementService.RecentPackageRepository; packageManagementService.PackageInstalled += PackageInstalled; + packageManagementService.PackageUninstalled += PackageUninstalled; } void PackageInstalled(object sender, EventArgs e) @@ -23,6 +24,11 @@ namespace ICSharpCode.PackageManagement ReadPackages(); } + void PackageUninstalled(object sender, EventArgs e) + { + ReadPackages(); + } + protected override IQueryable GetAllPackages() { return recentPackageRepository.GetPackages(); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs index af4c9df198..fbf2ac18f9 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs @@ -63,5 +63,26 @@ namespace PackageManagement.Tests PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); } + + [Test] + public void PackageViewModels_PackageIsUninstalledAfterRecentPackagesDisplayed_PackagesOnDisplayAreUpdated() + { + CreateViewModel(); + viewModel.ReadPackages(); + CompleteReadPackagesTask(); + var package = new FakePackage("Test"); + FakePackageRepository repository = packageManagementService.FakeRecentPackageRepository; + repository.FakePackages.Add(package); + + ClearReadPackagesTasks(); + packageManagementService.FirePackageUninstalled(); + CompleteReadPackagesTask(); + + var expectedPackages = new FakePackage[] { + package + }; + + PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); + } } }