Browse Source

Use the update package action when installing a package update for multiple projects selected in Manage Packages dialog.

pull/16/merge
Matt Ward 15 years ago
parent
commit
01b219878d
  1. 15
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  3. 47
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

15
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -134,6 +134,7 @@ namespace ICSharpCode.PackageManagement @@ -134,6 +134,7 @@ namespace ICSharpCode.PackageManagement
}
public Version Version {
get { return package.Version; }
}
@ -344,9 +345,7 @@ namespace ICSharpCode.PackageManagement @@ -344,9 +345,7 @@ namespace ICSharpCode.PackageManagement
var actions = new List<ProcessPackageAction>();
foreach (IPackageManagementSelectedProject selectedProject in projects) {
if (selectedProject.IsSelected) {
selectedProject.Project.Logger = logger;
InstallPackageAction action = selectedProject.Project.CreateInstallPackageAction();
action.Package = package;
ProcessPackageAction action = CreateInstallPackageAction(selectedProject);
actions.Add(action);
}
}
@ -372,6 +371,16 @@ namespace ICSharpCode.PackageManagement @@ -372,6 +371,16 @@ namespace ICSharpCode.PackageManagement
return true;
}
ProcessPackageOperationsAction CreateInstallPackageAction(IPackageManagementSelectedProject selectedProject)
{
IPackageManagementProject project = selectedProject.Project;
project.Logger = logger;
ProcessPackageOperationsAction action = CreateInstallPackageAction(project);
action.Package = package;
return action;
}
void RunActionsIfAnyExist(List<ProcessPackageAction> actions)
{
if (actions.Any()) {

1
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs

@ -51,6 +51,7 @@ namespace PackageManagement.Tests.Helpers @@ -51,6 +51,7 @@ namespace PackageManagement.Tests.Helpers
this.FakePackage = package;
this.FakeActionRunner = actionRunner;
this.FakeLogger = logger;
this.FakePackageManagementEvents = packageManagementEvents;
}
}
}

47
src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

@ -2,9 +2,11 @@ @@ -2,9 +2,11 @@
// 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 ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -18,6 +20,7 @@ namespace PackageManagement.Tests @@ -18,6 +20,7 @@ namespace PackageManagement.Tests
FakePackageManagementProject fakeProject;
FakeUpdatePackageAction updatePackageAction;
FakePackageActionRunner fakeActionRunner;
FakePackageManagementEvents fakePackageManagementEvents;
void CreateViewModel()
{
@ -26,6 +29,26 @@ namespace PackageManagement.Tests @@ -26,6 +29,26 @@ namespace PackageManagement.Tests
fakeProject = fakeSolution.FakeProjectToReturnFromGetProject;
updatePackageAction = fakeProject.FakeUpdatePackageAction;
fakeActionRunner = viewModel.FakeActionRunner;
fakePackageManagementEvents = viewModel.FakePackageManagementEvents;
}
void AddProjectToSolution()
{
TestableProject project = ProjectHelper.CreateTestProject();
fakeSolution.FakeMSBuildProjects.Add(project);
}
void CreateViewModelWithTwoProjectsSelected(string projectName1, string projectName2)
{
CreateViewModel();
AddProjectToSolution();
AddProjectToSolution();
fakeSolution.FakeMSBuildProjects[0].Name = projectName1;
fakeSolution.FakeMSBuildProjects[1].Name = projectName2;
fakeSolution.NoProjectsSelected();
fakeSolution.AddFakeProjectToReturnFromGetProject(projectName1);
fakeSolution.AddFakeProjectToReturnFromGetProject(projectName2);
}
[Test]
@ -43,8 +66,8 @@ namespace PackageManagement.Tests @@ -43,8 +66,8 @@ namespace PackageManagement.Tests
CreateViewModel();
viewModel.AddPackage();
var expectedPackage = viewModel.FakePackage;
var actualPackage = updatePackageAction.Package;
FakePackage expectedPackage = viewModel.FakePackage;
IPackage actualPackage = updatePackageAction.Package;
Assert.AreEqual(expectedPackage, actualPackage);
}
@ -55,8 +78,8 @@ namespace PackageManagement.Tests @@ -55,8 +78,8 @@ namespace PackageManagement.Tests
CreateViewModel();
viewModel.AddPackage();
var expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
var actualOperations = updatePackageAction.Operations;
IEnumerable<PackageOperation> expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
IEnumerable<PackageOperation> actualOperations = updatePackageAction.Operations;
Assert.AreEqual(expectedOperations, actualOperations);
}
@ -71,5 +94,21 @@ namespace PackageManagement.Tests @@ -71,5 +94,21 @@ namespace PackageManagement.Tests
Assert.AreEqual(updatePackageAction, actionExecuted);
}
[Test]
public void ManagePackage_OneProjectSelectedByUser_PackageIsUpdated()
{
CreateViewModelWithTwoProjectsSelected("Project A", "Project B");
fakePackageManagementEvents.ProjectsToSelect.Add("Project B");
fakePackageManagementEvents.OnSelectProjectsReturnValue = true;
viewModel.ManagePackage();
FakePackage expectedPackage = viewModel.FakePackage;
List<ProcessPackageAction> actions = fakeActionRunner.GetActionsRunInOneCallAsList();
var updatePackageAction = actions[0] as UpdatePackageAction;
IPackage actualPackage = updatePackageAction.Package;
Assert.AreEqual(expectedPackage, actualPackage);
}
}
}

Loading…
Cancel
Save