diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index cee05593ff..a29704bfb4 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -159,6 +159,8 @@
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
index 9b9a93348f..2a8dc37feb 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
@@ -130,5 +130,16 @@ namespace ICSharpCode.PackageManagement.Design
public IPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}
+
+ public IPackageRepository RepositoryPassedToUpdatePackage;
+ public IPackage PackagePassedToUpdatePackage;
+ public IEnumerable PackageOperationsPassedToUpdatePackage;
+
+ public void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable operations)
+ {
+ RepositoryPassedToUpdatePackage = repository;
+ PackagePassedToUpdatePackage = package;
+ PackageOperationsPassedToUpdatePackage = operations;
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
index 6cae4e685e..8a7072dcf5 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
@@ -19,6 +19,7 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable operations);
void UninstallPackage(IPackageRepository repository, IPackage package);
+ void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable operations);
PackageManagementOptions Options { get; }
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
index 1e676c48f0..ba1d6ba66d 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
@@ -13,5 +13,6 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package);
void InstallPackage(IPackage package, IEnumerable operations);
void UninstallPackage(IPackage package);
+ void UpdatePackage(IPackage package, IEnumerable operations);
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
index a6d895c1b8..11e9f83d66 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
@@ -187,5 +187,17 @@ namespace ICSharpCode.PackageManagement
{
return packageRepositoryCache.CreateRepository(source);
}
+
+ public void UpdatePackage(
+ IPackageRepository repository,
+ IPackage package,
+ IEnumerable operations)
+ {
+ ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
+ packageManager.UpdatePackage(package, operations);
+ projectService.RefreshProjectBrowser();
+ RecentPackageRepository.AddPackage(package);
+ OnPackageInstalled();
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs
index c0a4c1dd08..2bdbe645d1 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs
@@ -21,7 +21,23 @@ namespace ICSharpCode.PackageManagement
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ITaskFactory taskFactory)
- : base(packageManagementService, messageReporter, taskFactory)
+ : this(
+ packageManagementService,
+ messageReporter,
+ new LicenseAcceptanceService(),
+ taskFactory)
+ {
+ }
+
+ public PackageUpdatesViewModel(
+ IPackageManagementService packageManagementService,
+ IMessageReporter messageReporter,
+ ILicenseAcceptanceService licenseAcceptanceService,
+ ITaskFactory taskFactory)
+ : base(
+ packageManagementService,
+ new UpdatedPackageViewModelFactory(packageManagementService, licenseAcceptanceService, messageReporter),
+ taskFactory)
{
this.packageManagementService = packageManagementService;
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
index 5eb78c2d28..a2c5411696 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
@@ -297,10 +297,18 @@ namespace ICSharpCode.PackageManagement
void InstallPackage()
{
- packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
+ InstallPackage(sourcePackageRepository, package, packageOperations);
OnPropertyChanged(model => model.IsAdded);
}
+ protected virtual void InstallPackage(
+ IPackageRepository sourcePackageRepository,
+ IPackage package,
+ IEnumerable packageOperations)
+ {
+ packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
+ }
+
void ReportError(Exception ex)
{
messageReporter.ShowErrorMessage(ex.Message);
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
index 09eede7aec..83709a2141 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
@@ -8,27 +8,27 @@ namespace ICSharpCode.PackageManagement
{
public class PackageViewModelFactory : IPackageViewModelFactory
{
- IPackageManagementService packageManagementService;
- ILicenseAcceptanceService licenseAcceptanceService;
- IMessageReporter messageReporter;
-
public PackageViewModelFactory(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
- IMessageReporter messageReport)
+ IMessageReporter messageReporter)
{
- this.packageManagementService = packageManagementService;
- this.licenseAcceptanceService = licenseAcceptanceService;
- this.messageReporter = messageReport;
+ this.PackageManagementService = packageManagementService;
+ this.LicenseAcceptanceService = licenseAcceptanceService;
+ this.MessageReporter = messageReporter;
}
- public PackageViewModel CreatePackageViewModel(IPackage package)
+ public virtual PackageViewModel CreatePackageViewModel(IPackage package)
{
return new PackageViewModel(
package,
- packageManagementService,
- licenseAcceptanceService,
- messageReporter);
+ PackageManagementService,
+ LicenseAcceptanceService,
+ MessageReporter);
}
+
+ protected IPackageManagementService PackageManagementService { get; private set; }
+ protected ILicenseAcceptanceService LicenseAcceptanceService { get; private set; }
+ protected IMessageReporter MessageReporter { get; private set; }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
index e09cedbc50..5d2edf0122 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
@@ -91,5 +91,24 @@ namespace ICSharpCode.PackageManagement
ProjectManager.RemovePackageReference(package.Id, forceRemove, removeDependencies);
base.UninstallPackage(package, forceRemove, removeDependencies);
}
+
+ public void UpdatePackage(IPackage package, IEnumerable operations)
+ {
+ foreach (PackageOperation operation in operations) {
+ Execute(operation);
+ }
+ UpdatePackageReference(package);
+ }
+
+ void UpdatePackageReference(IPackage package)
+ {
+ bool updateDependencies = true;
+ UpdatePackageReference(package, updateDependencies);
+ }
+
+ void UpdatePackageReference(IPackage package, bool updateDependencies)
+ {
+ ProjectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
new file mode 100644
index 0000000000..d5e99bf7db
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
@@ -0,0 +1,32 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using NuGet;
+
+namespace ICSharpCode.PackageManagement
+{
+ public class UpdatedPackageViewModel : PackageViewModel
+ {
+ IPackageManagementService packageManagementService;
+
+ public UpdatedPackageViewModel(
+ IPackage package,
+ IPackageManagementService packageManagementService,
+ ILicenseAcceptanceService licenseAcceptanceService,
+ IMessageReporter messageReporter)
+ : base(package, packageManagementService, licenseAcceptanceService, messageReporter)
+ {
+ this.packageManagementService = packageManagementService;
+ }
+
+ protected override void InstallPackage(
+ IPackageRepository sourcePackageRepository,
+ IPackage package,
+ IEnumerable packageOperations)
+ {
+ packageManagementService.UpdatePackage(sourcePackageRepository, package, packageOperations);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
new file mode 100644
index 0000000000..524711d7b5
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
@@ -0,0 +1,28 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using NuGet;
+
+namespace ICSharpCode.PackageManagement
+{
+ public class UpdatedPackageViewModelFactory : PackageViewModelFactory
+ {
+ public UpdatedPackageViewModelFactory(
+ IPackageManagementService packageManagementService,
+ ILicenseAcceptanceService licenseAcceptanceService,
+ IMessageReporter messageReporter)
+ : base(packageManagementService, licenseAcceptanceService, messageReporter)
+ {
+ }
+
+ public override PackageViewModel CreatePackageViewModel(IPackage package)
+ {
+ return new UpdatedPackageViewModel(
+ package,
+ PackageManagementService,
+ LicenseAcceptanceService,
+ MessageReporter);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index debd8ebeda..d8f1fe9856 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -106,6 +106,7 @@
+
@@ -113,6 +114,7 @@
+
@@ -136,6 +138,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
index d4945284a8..82f9c513f3 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
@@ -115,6 +115,15 @@ namespace PackageManagement.Tests.Helpers
throw new NotImplementedException();
}
+ public IPackage PackagePassedToUpdatePackage;
+ public IEnumerable PackageOperationsPassedToUpdatePackage;
+
+ public void UpdatePackage(IPackage package, IEnumerable operations)
+ {
+ PackagePassedToUpdatePackage = package;
+ PackageOperationsPassedToUpdatePackage = operations;
+ }
+
public void InstallPackage(IPackage package, IEnumerable operations)
{
LoggerSetBeforeInstallPackageCalled = Logger;
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs
index a9d4591c1e..9901ce686a 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs
@@ -17,6 +17,9 @@ namespace PackageManagement.Tests.Helpers
public bool ForcePassedToRemovePackageReference;
public bool RemoveDependenciesPassedToRemovePackageReference;
+ public IPackage PackagePassedToUpdatePackageReference;
+ public bool UpdateDependenciesPassedToUpdatePackageReference;
+
public FakePackageRepository FakeLocalRepository {
get { return LocalRepository as FakePackageRepository; }
}
@@ -50,5 +53,15 @@ namespace PackageManagement.Tests.Helpers
ForcePassedToRemovePackageReference = force;
RemoveDependenciesPassedToRemovePackageReference = removeDependencies;
}
+
+ public override void UpdatePackageReference(string packageId, Version version, bool updateDependencies)
+ {
+ var package = new FakePackage();
+ package.Id = packageId;
+ package.Version = version;
+
+ PackagePassedToUpdatePackageReference = package;
+ UpdateDependenciesPassedToUpdatePackageReference = updateDependencies;
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
new file mode 100644
index 0000000000..17a0ec778a
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
@@ -0,0 +1,68 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using ICSharpCode.PackageManagement;
+using ICSharpCode.PackageManagement.Design;
+using NuGet;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class TestableUpdatedPackageViewModel : UpdatedPackageViewModel
+ {
+ public FakePackageOperationResolver FakePackageOperationResolver = new FakePackageOperationResolver();
+ public FakePackageRepository FakeSourcePackageRepository;
+ public FakePackageManagementService FakePackageManagementService;
+ public FakeLicenseAcceptanceService FakeLicenseAcceptanceService;
+ public FakeMessageReporter FakeMessageReporter;
+ public FakePackage FakePackage;
+ public ILogger LoggerUsedWhenCreatingPackageResolver;
+ public string PackageViewModelAddingPackageMessageFormat = String.Empty;
+ public string PackageViewModelRemovingPackageMessageFormat = String.Empty;
+
+ public TestableUpdatedPackageViewModel()
+ : this(new FakePackageManagementService())
+ {
+ }
+
+ public TestableUpdatedPackageViewModel(FakePackageManagementService packageManagementService)
+ : this(
+ new FakePackage(),
+ packageManagementService,
+ new FakeLicenseAcceptanceService(),
+ new FakeMessageReporter())
+ {
+ }
+
+ public TestableUpdatedPackageViewModel(
+ FakePackage package,
+ FakePackageManagementService packageManagementService,
+ FakeLicenseAcceptanceService licenseAcceptanceService,
+ FakeMessageReporter messageReporter)
+ : base(
+ package,
+ packageManagementService,
+ licenseAcceptanceService,
+ messageReporter)
+ {
+ this.FakePackage = package;
+ this.FakePackageManagementService = packageManagementService;
+ this.FakeLicenseAcceptanceService = licenseAcceptanceService;
+ this.FakeMessageReporter = messageReporter;
+ this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
+ }
+
+ protected override IPackageOperationResolver CreatePackageOperationResolver(ILogger logger)
+ {
+ return FakePackageOperationResolver;
+ }
+
+ protected override string AddingPackageMessageFormat {
+ get { return PackageViewModelAddingPackageMessageFormat; }
+ }
+
+ protected override string RemovingPackageMessageFormat {
+ get { return PackageViewModelRemovingPackageMessageFormat; }
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs
new file mode 100644
index 0000000000..455dddfc7a
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs
@@ -0,0 +1,41 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using ICSharpCode.PackageManagement;
+using ICSharpCode.PackageManagement.Design;
+using NuGet;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class UpdatePackageHelper
+ {
+ PackageManagementService packageManagementService;
+
+ public FakePackage TestPackage = new FakePackage() {
+ Id = "Test"
+ };
+
+ public FakePackageRepository PackageRepository = new FakePackageRepository();
+ public List PackageOperations = new List();
+
+ public UpdatePackageHelper(PackageManagementService packageManagementService)
+ {
+ this.packageManagementService = packageManagementService;
+ }
+
+ public void UpdateTestPackage()
+ {
+ packageManagementService.UpdatePackage(PackageRepository, TestPackage, PackageOperations);
+ }
+
+ public FakePackage AddPackageInstallOperation()
+ {
+ var package = new FakePackage("Package to install");
+ var operation = new PackageOperation(package, PackageAction.Install);
+ PackageOperations.Add(operation);
+ return package;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
index bdce072e05..e02b542c8a 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
@@ -24,6 +24,7 @@ namespace PackageManagement.Tests
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
InstallPackageHelper installPackageHelper;
+ UpdatePackageHelper updatePackageHelper;
FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
@@ -53,6 +54,7 @@ namespace PackageManagement.Tests
fakeOutputMessagesView);
installPackageHelper = new InstallPackageHelper(packageManagementService);
+ updatePackageHelper = new UpdatePackageHelper(packageManagementService);
}
[Test]
@@ -203,7 +205,7 @@ namespace PackageManagement.Tests
}
[Test]
- public void PackageInstalled_PackageIsInstalled_EventFiresAfterPackageInstalled()
+ public void InstallPackage_PackageIsInstalled_EventFiresAfterPackageInstalled()
{
CreatePackageManagementService();
@@ -217,7 +219,7 @@ namespace PackageManagement.Tests
}
[Test]
- public void PackageUninstalled_PackageIsUninstalled_EventFiresAfterPackageUninstalled()
+ public void UninstallPackage_PackageIsUninstalled_EventFiresAfterPackageUninstalled()
{
CreatePackageManagementService();
@@ -484,5 +486,82 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
}
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalled()
+ {
+ CreatePackageManagementService();
+ updatePackageHelper.UpdateTestPackage();
+
+ var expectedPackage = updatePackageHelper.TestPackage;
+ var actualPackage = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
+
+ Assert.AreEqual(expectedPackage, actualPackage);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_RepositoryUsedToCreatePackageManager()
+ {
+ CreatePackageManagementService();
+ updatePackageHelper.UpdateTestPackage();
+
+ var expectedRepository = updatePackageHelper.PackageRepository;
+ var actualRepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
+
+ Assert.AreEqual(expectedRepository, actualRepository);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_PackageOperationsUsedToUpdatePackage()
+ {
+ CreatePackageManagementService();
+ updatePackageHelper.UpdateTestPackage();
+
+ var expectedOperations = updatePackageHelper.PackageOperations;
+ var actualOperations = fakePackageManagerFactory.FakePackageManager.PackageOperationsPassedToUpdatePackage;
+
+ Assert.AreEqual(expectedOperations, actualOperations);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_ProjectBrowserIsRefreshed()
+ {
+ CreatePackageManagementService();
+ updatePackageHelper.UpdateTestPackage();
+
+ bool refreshed = fakeProjectService.IsRefreshProjectBrowserCalled;
+
+ Assert.IsTrue(refreshed);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_PackageUpdateIsAddedToRecentPackagesRepository()
+ {
+ CreatePackageManagementService();
+ updatePackageHelper.UpdateTestPackage();
+
+ var recentPackages = packageManagementService.RecentPackageRepository.GetPackages();
+
+ var expectedPackages = new FakePackage[] {
+ updatePackageHelper.TestPackage
+ };
+
+ PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalledEventIsFired()
+ {
+ CreatePackageManagementService();
+
+ IPackage package = null;
+ packageManagementService.PackageInstalled += (sender, e) => {
+ package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
+ };
+ updatePackageHelper.UpdateTestPackage();
+
+ Assert.AreEqual(installPackageHelper.TestPackage, package);
+
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
index 05a2128f42..bb49d4a1df 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
@@ -92,7 +92,7 @@ namespace PackageManagement.Tests
return package;
}
- FakePackage InstallPackageWithOnePackageOperation(PackageOperation operation)
+ FakePackage InstallPackageWithPackageOperations(PackageOperation operation)
{
var operations = new PackageOperation[] {
operation
@@ -157,6 +157,24 @@ namespace PackageManagement.Tests
return new PackageOperation(package, PackageAction.Install);
}
+ FakePackage UpdatePackageWithNoPackageOperations()
+ {
+ FakePackage package = CreateFakePackage();
+ var operations = new List();
+ packageManager.UpdatePackage(package, operations);
+ return package;
+ }
+
+ FakePackage UpdatePackageWithPackageOperations(PackageOperation operation)
+ {
+ var operations = new PackageOperation[] {
+ operation
+ };
+ FakePackage package = CreateFakePackage();
+ packageManager.UpdatePackage(package, operations);
+ return package;
+ }
+
[Test]
public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager()
{
@@ -242,8 +260,8 @@ namespace PackageManagement.Tests
CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation();
- InstallPackageWithOnePackageOperation(operation);
-
+ InstallPackageWithPackageOperations(operation);
+
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
}
@@ -358,5 +376,37 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test", packageRemovedFromProject.Id);
}
+
+ [Test]
+ public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesReferenceInProject()
+ {
+ CreatePackageManager();
+ CreateTestableProjectManager();
+ var package = UpdatePackageWithNoPackageOperations();
+
+ Assert.AreEqual(package, testableProjectManager.PackagePassedToUpdatePackageReference);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesDependenciesInProject()
+ {
+ CreatePackageManager();
+ CreateTestableProjectManager();
+ var package = UpdatePackageWithNoPackageOperations();
+
+ Assert.IsTrue(testableProjectManager.UpdateDependenciesPassedToUpdatePackageReference);
+ }
+
+ [Test]
+ public void UpdatePackage_PackageInstanceAndOneInstallPackageOperationPassed_PackageDefinedInOperationIsInstalledInLocalRepository()
+ {
+ CreatePackageManager();
+ CreateTestableProjectManager();
+
+ PackageOperation operation = CreateOneInstallPackageOperation();
+ UpdatePackageWithPackageOperations(operation);
+
+ Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs
new file mode 100644
index 0000000000..68b0489b41
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs
@@ -0,0 +1,58 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using ICSharpCode.PackageManagement.Design;
+using NUnit.Framework;
+using PackageManagement.Tests.Helpers;
+
+namespace PackageManagement.Tests
+{
+ [TestFixture]
+ public class UpdatedPackageViewModelTests
+ {
+ TestableUpdatedPackageViewModel viewModel;
+ FakePackageManagementService fakePackageManagementService;
+ FakePackageRepository sourcePackageRepository;
+
+ void CreateViewModel()
+ {
+ viewModel = new TestableUpdatedPackageViewModel();
+ fakePackageManagementService = viewModel.FakePackageManagementService;
+ sourcePackageRepository = viewModel.FakeSourcePackageRepository;
+ }
+
+ [Test]
+ public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingSourcePackageRepository()
+ {
+ CreateViewModel();
+ viewModel.AddPackage();
+
+ Assert.AreEqual(sourcePackageRepository, fakePackageManagementService.RepositoryPassedToUpdatePackage);
+ }
+
+ [Test]
+ public void AddPackage_PackageAddedSuccessfully_PackageUpdated()
+ {
+ CreateViewModel();
+ viewModel.AddPackage();
+
+ var expectedPackage = viewModel.FakePackage;
+ var actualPackage = fakePackageManagementService.PackagePassedToUpdatePackage;
+
+ Assert.AreEqual(expectedPackage, actualPackage);
+ }
+
+ [Test]
+ public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingPackageOperations()
+ {
+ CreateViewModel();
+ viewModel.AddPackage();
+
+ var expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
+ var actualOperations = fakePackageManagementService.PackageOperationsPassedToUpdatePackage;
+
+ Assert.AreEqual(expectedOperations, actualOperations);
+ }
+ }
+}