From 4aa7a3ca10d427ba0debfc4db79648ff07a99e70 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Tue, 4 Jun 2013 20:08:34 +0100 Subject: [PATCH] Update installed NuGet packages after updating all packages in dialog. --- .../Project/Src/InstalledPackagesViewModel.cs | 11 +++++-- .../Src/InstalledPackagesViewModelTests.cs | 33 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs index 02aa55bb97..52473737c8 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs @@ -25,12 +25,18 @@ namespace ICSharpCode.PackageManagement { this.solution = solution; this.packageManagementEvents = packageManagementEvents; - packageManagementEvents.ParentPackageInstalled += InstalledPackagesChanged; - packageManagementEvents.ParentPackageUninstalled += InstalledPackagesChanged; + RegisterEvents(); TryGetActiveProject(); } + void RegisterEvents() + { + packageManagementEvents.ParentPackageInstalled += InstalledPackagesChanged; + packageManagementEvents.ParentPackageUninstalled += InstalledPackagesChanged; + packageManagementEvents.ParentPackagesUpdated += InstalledPackagesChanged; + } + void TryGetActiveProject() { try { @@ -49,6 +55,7 @@ namespace ICSharpCode.PackageManagement { packageManagementEvents.ParentPackageInstalled -= InstalledPackagesChanged; packageManagementEvents.ParentPackageUninstalled -= InstalledPackagesChanged; + packageManagementEvents.ParentPackagesUpdated -= InstalledPackagesChanged; } protected override IQueryable GetAllPackages() diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs index 949d3fdfb5..d2e41f7233 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs @@ -191,5 +191,38 @@ namespace PackageManagement.Tests PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); } + + [Test] + public void PackageViewModels_PackagesUpdated_PackageViewModelsIsUpdated() + { + CreateViewModel(); + viewModel.ReadPackages(); + CompleteReadPackagesTask(); + FakePackage package = AddPackageToProjectLocalRepository(); + ClearReadPackagesTasks(); + + packageManagementEvents.OnParentPackagesUpdated(new FakePackage[] { package }); + CompleteReadPackagesTask(); + + IPackage firstPackage = viewModel.PackageViewModels[0].GetPackage(); + Assert.AreEqual(package, firstPackage); + } + + [Test] + public void PackageViewModels_PackagesUpdatedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated() + { + CreateViewModel(); + viewModel.ReadPackages(); + CompleteReadPackagesTask(); + FakePackage package = AddPackageToProjectLocalRepository(); + ClearReadPackagesTasks(); + + viewModel.Dispose(); + + packageManagementEvents.OnParentPackagesUpdated(new FakePackage[] { package }); + CompleteReadPackagesTask(); + + Assert.AreEqual(0, viewModel.PackageViewModels.Count); + } } }