diff --git a/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe b/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe
index 8b165b5898..dabb7ca654 100644
Binary files a/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe and b/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe differ
diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index 71c1f27a92..086350f4fb 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -55,7 +55,6 @@
-
@@ -187,6 +186,8 @@
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
index 21d5310426..6b46777cb5 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
@@ -127,5 +127,12 @@ namespace ICSharpCode.PackageManagement.Design
{
DependenciesList.Add(new PackageDependency(id));
}
+
+ List frameworkAssemblies =
+ new List();
+
+ public IEnumerable FrameworkAssemblies {
+ get { return frameworkAssemblies; }
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs
index 1e04f918e1..87746c5476 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs
@@ -2,8 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.Collections.Generic;
using System.IO;
using System.Runtime.Versioning;
+
using NuGet;
namespace ICSharpCode.PackageManagement.Design
@@ -28,5 +30,11 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
+
+ public IEnumerable SupportedFrameworks {
+ get {
+ throw new NotImplementedException();
+ }
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
index 4074856839..5390bc69b1 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
@@ -237,5 +237,16 @@ namespace ICSharpCode.PackageManagement.Design
ForceRemovePassedToUninstallPackage = forceRemove;
RemoveDependenciesPassedToUninstallPackage = removeDependencies;
}
+
+ 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/Design/FakePackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
index a701aa76b0..40688c328a 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
@@ -131,5 +131,14 @@ namespace ICSharpCode.PackageManagement.Design
IgnoreDependenciesPassedToGetInstallPackageOperations = ignoreDependencies;
return PackageOperationsToReturnFromGetInstallPackageOperations;
}
+
+ public IPackage PackagePassedToUpdatePackage;
+ public IEnumerable PackageOperationsPassedToUpdatePackage;
+
+ public void UpdatePackage(IPackage package, IEnumerable operations)
+ {
+ PackagePassedToUpdatePackage = package;
+ PackageOperationsPassedToUpdatePackage = operations;
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
index 548dbc9459..a9aab268ec 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
@@ -17,9 +17,7 @@ namespace ICSharpCode.PackageManagement.Design
}
public string ProjectName {
- get {
- throw new NotImplementedException();
- }
+ get { return String.Empty; }
}
public dynamic GetPropertyValue(string propertyName)
@@ -46,5 +44,10 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
+
+ public void AddFrameworkReference(string name)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
index 09d2987698..a9c7634ab3 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
@@ -39,6 +39,8 @@ namespace ICSharpCode.PackageManagement
bool forceRemove,
bool removeDependencies);
+ void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable operations);
+
MSBuildBasedProject GetProject(string name);
PackageManagementOptions Options { get; }
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
index 27b63b66ac..1be28f5693 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
@@ -13,6 +13,8 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package, IEnumerable operations, bool ignoreDependencies);
void UninstallPackage(IPackage package);
+ void UpdatePackage(IPackage package, IEnumerable operations);
+
IEnumerable GetInstallPackageOperations(IPackage package, bool ignoreDependencies);
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
index 8a14744703..8a00fe9f18 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
@@ -284,5 +284,17 @@ namespace ICSharpCode.PackageManagement
{
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
}
+
+ 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/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
index de3561709b..9d4900913e 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
@@ -272,10 +272,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 c9c3923ac6..5891e7ada9 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
@@ -103,5 +103,24 @@ namespace ICSharpCode.PackageManagement
Logger,
ignoreDependencies);
}
+
+ 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/SharpDevelopProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
index c41fd548a2..f227277599 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
@@ -64,9 +64,7 @@ namespace ICSharpCode.PackageManagement
public void AddReference(string referencePath, Stream stream)
{
ReferenceProjectItem assemblyReference = CreateReference(referencePath);
- projectService.AddProjectItem(project, assemblyReference);
- projectService.Save(project);
- LogAddedReferenceToProject(assemblyReference);
+ AddReferenceToProject(assemblyReference);
}
ReferenceProjectItem CreateReference(string referencePath)
@@ -77,6 +75,13 @@ namespace ICSharpCode.PackageManagement
return assemblyReference;
}
+ void AddReferenceToProject(ReferenceProjectItem assemblyReference)
+ {
+ projectService.AddProjectItem(project, assemblyReference);
+ projectService.Save(project);
+ LogAddedReferenceToProject(assemblyReference);
+ }
+
void LogAddedReferenceToProject(ReferenceProjectItem referenceProjectItem)
{
LogAddedReferenceToProject(referenceProjectItem.Include, ProjectName);
@@ -245,5 +250,18 @@ namespace ICSharpCode.PackageManagement
{
DebugLogFormat("Removed file '{0}' from folder '{1}'.", fileName, directory);
}
+
+ public void AddFrameworkReference(string name)
+ {
+ ReferenceProjectItem assemblyReference = CreateGacReference(name);
+ AddReferenceToProject(assemblyReference);
+ }
+
+ ReferenceProjectItem CreateGacReference(string name)
+ {
+ var assemblyReference = new ReferenceProjectItem(project);
+ assemblyReference.Include = name;
+ return assemblyReference;
+ }
}
}
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/Project/Src/UpdatedPackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
index d01bb3bb6a..f8a2a0a9c1 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
@@ -19,7 +19,23 @@ namespace ICSharpCode.PackageManagement
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ITaskFactory taskFactory)
- : base(packageManagementService, messageReporter, taskFactory)
+ : this(
+ packageManagementService,
+ messageReporter,
+ new LicenseAcceptanceService(),
+ taskFactory)
+ {
+ }
+
+ public UpdatedPackagesViewModel(
+ 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/RequiredLibraries/NuGet.Core.dll b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll
index aadac4d76b..66170008cf 100644
Binary files a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll differ
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index 711e3684a3..e14c393c17 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -114,6 +114,7 @@
+
@@ -122,6 +123,7 @@
+
@@ -148,6 +150,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs
index a0d860979a..087d977bb5 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs
@@ -22,5 +22,15 @@ namespace PackageManagement.Tests.Helpers
{
throw new NotImplementedException();
}
+
+ public string GetPackageDirectory(string packageId, Version version)
+ {
+ throw new NotImplementedException();
+ }
+
+ public string GetPackageFileName(string packageId, Version version)
+ {
+ throw new NotImplementedException();
+ }
}
}
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..f3a55df2d8
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
@@ -0,0 +1,63 @@
+// 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 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 0434c90f7a..156ee7d68b 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
@@ -25,6 +25,7 @@ namespace PackageManagement.Tests
TestableProject testProject;
InstallPackageHelper installPackageHelper;
UninstallPackageHelper uninstallPackageHelper;
+ UpdatePackageHelper updatePackageHelper;
FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
@@ -55,6 +56,7 @@ namespace PackageManagement.Tests
installPackageHelper = new InstallPackageHelper(packageManagementService);
uninstallPackageHelper = new UninstallPackageHelper(packageManagementService);
+ updatePackageHelper = new UpdatePackageHelper(packageManagementService);
}
FakePackage AddOneFakePackageToPackageRepositoryFactoryRepository(string id)
@@ -938,5 +940,82 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedProject, actualProject);
}
+
+ [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 2ca3a3d463..dbf3ae8985 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
@@ -106,7 +106,7 @@ namespace PackageManagement.Tests
return package;
}
- FakePackage InstallPackageWithOnePackageOperation(PackageOperation operation)
+ FakePackage InstallPackageWithPackageOperations(PackageOperation operation)
{
var operations = new PackageOperation[] {
operation
@@ -181,6 +181,24 @@ namespace PackageManagement.Tests
return packageManager.GetInstallPackageOperations(package, true);
}
+ 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()
{
@@ -276,8 +294,8 @@ namespace PackageManagement.Tests
CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation();
- InstallPackageWithOnePackageOperation(operation);
-
+ InstallPackageWithPackageOperations(operation);
+
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
}
@@ -480,6 +498,37 @@ namespace PackageManagement.Tests
bool result = fakePackageOperationResolverFactory.IgnoreDependenciesPassedToCreateInstallPackageOperationResolver;
Assert.IsTrue(result);
+ }
+
+ 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/SharpDevelopProjectSystemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
index adb654f167..09671d255e 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
@@ -623,5 +623,51 @@ namespace PackageManagement.Tests
Assert.AreEqual("test", projectSystem.DirectoryPassedToLogDeletedDirectory);
}
+
+ [Test]
+ public void AddFrameworkReference_SystemXmlToBeAdded_ReferenceAddedToProject()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+
+ projectSystem.AddFrameworkReference("System.Xml");
+
+ ReferenceProjectItem referenceItem = ProjectHelper.GetReference(project, "System.Xml");
+
+ ReferenceProjectItem expectedReferenceItem = new ReferenceProjectItem(project);
+ expectedReferenceItem.Include = "System.Xml";
+
+ ReferenceProjectItemAssert.AreEqual(expectedReferenceItem, referenceItem);
+ }
+
+ [Test]
+ public void AddFrameworkReference_SystemXmlToBeAdded_ProjectIsSaved()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+
+ projectSystem.AddFrameworkReference("System.Xml");
+
+ bool saved = project.IsSaved;
+
+ Assert.IsTrue(saved);
+ }
+
+ [Test]
+ public void AddFrameworkReference_SystemXmlToBeAdded_AddedReferenceIsLogged()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+ project.Name = "MyTestProject";
+
+ projectSystem.AddFrameworkReference("System.Xml");
+
+ var expectedReferenceAndProjectName = new ReferenceAndProjectName() {
+ Reference = "System.Xml",
+ Project = "MyTestProject"
+ };
+
+ Assert.AreEqual(expectedReferenceAndProjectName, projectSystem.ReferenceAndProjectNamePassedToLogAddedReferenceToProject);
+ }
}
}
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);
+ }
+ }
+}