diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
index 22e2bc5da8..612ec33882 100644
--- a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
@@ -51,25 +51,29 @@ namespace ICSharpCode.PackageManagement.Cmdlets
protected override void ProcessRecord()
{
ThrowErrorIfProjectNotOpen();
- if (IsPackageIdMissing()) {
+ if (HasPackageId()) {
+ if (HasProjectName()) {
+ UpdatePackageInSingleProject();
+ } else {
+ UpdatePackageInAllProjects();
+ }
+ } else {
if (HasProjectName()) {
UpdateAllPackagesInProject();
} else {
UpdateAllPackagesInSolution();
}
- } else {
- UpdatePackageInSingleProject();
}
}
- bool IsPackageIdMissing()
+ bool HasPackageId()
{
- return String.IsNullOrEmpty(Id);
+ return !String.IsNullOrEmpty(Id);
}
bool HasProjectName()
{
- return ProjectName != null;
+ return !String.IsNullOrEmpty(ProjectName);
}
void UpdateAllPackagesInProject()
@@ -138,5 +142,21 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.Execute();
}
}
+
+ void UpdatePackageInAllProjects()
+ {
+ IPackageManagementSolution solution = ConsoleHost.Solution;
+ IPackageRepository repository = GetActivePackageRepository();
+ PackageReference packageReference = CreatePackageReference();
+ IUpdatePackageActions updateActions =
+ updatePackageActionsFactory.CreateUpdatePackageInAllProjects(packageReference, solution, repository);
+
+ RunActions(updateActions);
+ }
+
+ PackageReference CreatePackageReference()
+ {
+ return new PackageReference(Id, Version, null);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
index b9dc861063..e61f9ea84f 100644
--- a/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
@@ -23,6 +23,7 @@ namespace PackageManagement.Cmdlets.Tests
FakeUpdatePackageActions fakeUpdateAllPackagesInProject;
FakePackageManagementSolution fakeSolution;
FakeUpdatePackageActions fakeUpdateAllPackagesInSolution;
+ FakeUpdatePackageActions fakeUpdatePackageInAllProjects;
void CreateCmdletWithoutActiveProject()
{
@@ -34,6 +35,7 @@ namespace PackageManagement.Cmdlets.Tests
fakeUpdateActionsFactory = cmdlet.FakeUpdatePackageActionsFactory;
fakeUpdateAllPackagesInProject = fakeUpdateActionsFactory.FakeUpdateAllPackagesInProject;
fakeUpdateAllPackagesInSolution = fakeUpdateActionsFactory.FakeUpdateAllPackagesInSolution;
+ fakeUpdatePackageInAllProjects = fakeUpdateActionsFactory.FakeUpdatePackageInAllProjects;
}
FakeUpdatePackageAction UpdatePackageInSingleProjectAction {
@@ -66,6 +68,19 @@ namespace PackageManagement.Cmdlets.Tests
get { return GetUpdatingAllPackagesInSolutionAction(1); }
}
+ FakeUpdatePackageAction FirstUpdateActionWhenUpdatingPackageInAllProjects {
+ get { return GetUpdatingPackageInAllProjectsAction(0); }
+ }
+
+ FakeUpdatePackageAction GetUpdatingPackageInAllProjectsAction(int index)
+ {
+ return fakeUpdateActionsFactory.FakeUpdatePackageInAllProjects.FakeActions[index];
+ }
+
+ FakeUpdatePackageAction SecondUpdateActionWhenUpdatingPackageInAllProjects {
+ get { return GetUpdatingPackageInAllProjectsAction(1); }
+ }
+
void CreateCmdletWithActivePackageSourceAndProject()
{
CreateCmdletWithoutActiveProject();
@@ -129,6 +144,19 @@ namespace PackageManagement.Cmdlets.Tests
fakeUpdateActionsFactory.FakeUpdateAllPackagesInSolution.FakeActions.Add(action);
}
+ void CreateTwoUpdateActionsWhenUpdatingPackageInAllProjects(string packageId1, string packageId2)
+ {
+ CreateUpdateActionWhenUpdatingPackageInAllProjects(packageId1);
+ CreateUpdateActionWhenUpdatingPackageInAllProjects(packageId2);
+ }
+
+ void CreateUpdateActionWhenUpdatingPackageInAllProjects(string packageId)
+ {
+ var action = new FakeUpdatePackageAction(fakeProject);
+ action.PackageId = packageId;
+ fakeUpdateActionsFactory.FakeUpdatePackageInAllProjects.FakeActions.Add(action);
+ }
+
[Test]
public void ProcessRecord_NoActiveProject_ThrowsNoProjectOpenTerminatingError()
{
@@ -394,6 +422,19 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(fakeSolution, solution);
}
+ [Test]
+ public void ProcessRecord_UpdateAllPackagesInSolutionWhenProjectNameIsEmptyString_CreatesUpdateAllPackagesSolution()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetProjectNameParameter(String.Empty);
+ RunCmdlet();
+
+ IPackageManagementSolution solution =
+ fakeUpdateActionsFactory.SolutionPassedToCreateUpdateAllPackagesInSolution;
+
+ Assert.AreEqual(fakeSolution, solution);
+ }
+
[Test]
public void ProcessRecord_UpdateAllPackagesInSolutionWhenSourceSpecified_PackageSourceUsedToGetRepository()
{
@@ -486,5 +527,145 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(cmdlet, runner);
}
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjects_CreatesUpdatePackageInAllProjects()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ IPackageManagementSolution solution =
+ fakeUpdateActionsFactory.SolutionPassedToCreateUpdatePackageInAllProjects;
+
+ Assert.AreEqual(fakeSolution, solution);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjectsWhenSourceSpecified_PackageSourceUsedToGetRepository()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ PackageSource packageSource = fakeConsoleHost.PackageSourcePassedToGetRepository;
+ PackageSource expectedPackageSource = fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource;
+
+ Assert.AreEqual(expectedPackageSource, packageSource);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjectsWhenSourceSpecified_SourceUsedPassedGetActvePackageSourceFromConsoleHost()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ SetSourceParameter("Test");
+ RunCmdlet();
+
+ string packageSource = fakeConsoleHost.PackageSourcePassedToGetActivePackageSource;
+
+ Assert.AreEqual("Test", packageSource);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjects_RepositoryUsedToCreateUpdatePackageInAllProjects()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ IPackageRepository repository = fakeUpdateActionsFactory.SourceRepositoryPassedToCreateUpdatePackageInAllProjects;
+ IPackageRepository expectedRepository = fakeConsoleHost.FakePackageRepository;
+
+ Assert.AreEqual(expectedRepository, repository);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjectsWhenTwoUpdateActionsReturned_TwoUpdateActionsAreExecuted()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ CreateTwoUpdateActionsWhenUpdatingPackageInAllProjects("PackageA", "PackageB");
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ bool[] executedActions = new bool[] {
+ FirstUpdateActionWhenUpdatingPackageInAllProjects.IsExecuted,
+ SecondUpdateActionWhenUpdatingPackageInAllProjects.IsExecuted
+ };
+
+ bool[] expectedExecutedActions = new bool[] {
+ true,
+ true
+ };
+
+ CollectionAssert.AreEqual(expectedExecutedActions, executedActions);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjectsAndIgnoreDependenciesIsTrue_ActionDoesNotUpdateDependencies()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ CreateUpdateActionWhenUpdatingPackageInAllProjects("PackageA");
+ SetIdParameter("PackageA");
+ EnableIgnoreDependenciesParameter();
+ RunCmdlet();
+
+ bool update = fakeUpdatePackageInAllProjects.UpdateDependencies;
+
+ Assert.IsFalse(update);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjectsAndIgnoreDependenciesIsFalse_ActionUpdatesDependencies()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ CreateUpdateActionWhenUpdatingPackageInAllProjects("PackageA");
+ SetIdParameter("PackageA");
+ RunCmdlet();
+
+ bool update = fakeUpdatePackageInAllProjects.UpdateDependencies;
+
+ Assert.IsTrue(update);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjects_ActionsUseCmdletAsScriptRunner()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ IPackageScriptRunner runner = fakeUpdatePackageInAllProjects.PackageScriptRunner;
+
+ Assert.AreEqual(cmdlet, runner);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjects_PackageIdPassedToAction()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ RunCmdlet();
+
+ PackageReference packageReference =
+ fakeUpdateActionsFactory.PackageReferencePassedToCreateUpdatePackageInAllProjects;
+
+ Assert.AreEqual("MyPackage", packageReference.Id);
+ }
+
+ [Test]
+ public void ProcessRecord_UpdatePackageInAllProjects_PackageVersionPassedToAction()
+ {
+ CreateCmdletWithActivePackageSourceAndProject();
+ SetIdParameter("MyPackage");
+ var expectedVersion = new Version("1.0");
+ SetVersionParameter(expectedVersion);
+ RunCmdlet();
+
+ PackageReference packageReference =
+ fakeUpdateActionsFactory.PackageReferencePassedToCreateUpdatePackageInAllProjects;
+
+ Assert.AreEqual(expectedVersion, packageReference.Version);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index bc88582a7f..d11cd49021 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -360,6 +360,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActionsFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActionsFactory.cs
index 490767dff8..de60405ecc 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActionsFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActionsFactory.cs
@@ -13,5 +13,10 @@ namespace ICSharpCode.PackageManagement
IUpdatePackageActions CreateUpdateAllPackagesInSolution(
IPackageManagementSolution solution,
IPackageRepository sourceRepository);
+
+ IUpdatePackageActions CreateUpdatePackageInAllProjects(
+ PackageReference packageReference,
+ IPackageManagementSolution solution,
+ IPackageRepository sourceRepository);
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageActionsFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageActionsFactory.cs
index cd692ce51e..86ea21051a 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageActionsFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageActionsFactory.cs
@@ -19,5 +19,13 @@ namespace ICSharpCode.PackageManagement
{
return new UpdateAllPackagesInSolution(solution, sourceRepository);
}
+
+ public IUpdatePackageActions CreateUpdatePackageInAllProjects(
+ PackageReference packageReference,
+ IPackageManagementSolution solution,
+ IPackageRepository sourceRepository)
+ {
+ return new UpdatePackageInAllProjects(packageReference, solution, sourceRepository);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageInAllProjects.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageInAllProjects.cs
new file mode 100644
index 0000000000..64b11da20a
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageInAllProjects.cs
@@ -0,0 +1,62 @@
+// 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 System.Linq;
+using ICSharpCode.PackageManagement.Scripting;
+using NuGet;
+
+namespace ICSharpCode.PackageManagement
+{
+ public class UpdatePackageInAllProjects : IUpdatePackageActions
+ {
+ IPackageManagementSolution solution;
+ IPackageRepository sourceRepository;
+ List projects;
+ PackageReference packageReference;
+
+ public UpdatePackageInAllProjects(
+ PackageReference packageReference,
+ IPackageManagementSolution solution,
+ IPackageRepository sourceRepository)
+ {
+ this.packageReference = packageReference;
+ this.solution = solution;
+ this.sourceRepository = sourceRepository;
+ }
+
+ public bool UpdateDependencies { get; set; }
+ public IPackageScriptRunner PackageScriptRunner { get; set; }
+
+ public IEnumerable CreateActions()
+ {
+ GetProjects();
+ foreach (IPackageManagementProject project in projects) {
+ yield return CreateUpdatePackageAction(project);
+ }
+ }
+
+ void GetProjects()
+ {
+ projects = new List();
+ projects.AddRange(solution.GetProjects(sourceRepository));
+ }
+
+ UpdatePackageAction CreateUpdatePackageAction(IPackageManagementProject project)
+ {
+ UpdatePackageAction action = project.CreateUpdatePackageAction();
+ SetUpdatePackageActionProperties(action);
+ return action;
+ }
+
+ void SetUpdatePackageActionProperties(UpdatePackageAction action)
+ {
+ action.PackageId = packageReference.Id;
+ action.PackageScriptRunner = PackageScriptRunner;
+ action.PackageVersion = packageReference.Version;
+ action.UpdateDependencies = UpdateDependencies;
+ action.UpdateIfPackageDoesNotExistInProject = false;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index 09db0465c1..adac04ca1b 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -263,6 +263,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeUpdatePackageActionsFactory.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeUpdatePackageActionsFactory.cs
index 35bbf442d0..df82941635 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeUpdatePackageActionsFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeUpdatePackageActionsFactory.cs
@@ -34,5 +34,23 @@ namespace PackageManagement.Tests.Helpers
SourceRepositoryPassedToCreateUpdateAllPackagesInSolution = sourceRepository;
return FakeUpdateAllPackagesInSolution;
}
+
+ public FakeUpdatePackageActions FakeUpdatePackageInAllProjects =
+ new FakeUpdatePackageActions();
+
+ public IPackageManagementSolution SolutionPassedToCreateUpdatePackageInAllProjects;
+ public IPackageRepository SourceRepositoryPassedToCreateUpdatePackageInAllProjects;
+ public PackageReference PackageReferencePassedToCreateUpdatePackageInAllProjects;
+
+ public IUpdatePackageActions CreateUpdatePackageInAllProjects(
+ PackageReference packageReference,
+ IPackageManagementSolution solution,
+ IPackageRepository sourceRepository)
+ {
+ PackageReferencePassedToCreateUpdatePackageInAllProjects = packageReference;
+ SolutionPassedToCreateUpdatePackageInAllProjects = solution;
+ SourceRepositoryPassedToCreateUpdatePackageInAllProjects = sourceRepository;
+ return FakeUpdatePackageInAllProjects;
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs
new file mode 100644
index 0000000000..815a94ad95
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs
@@ -0,0 +1,211 @@
+// 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 System.Linq;
+
+using ICSharpCode.PackageManagement;
+using ICSharpCode.PackageManagement.Design;
+using ICSharpCode.PackageManagement.Scripting;
+using NuGet;
+using NUnit.Framework;
+using PackageManagement.Tests.Helpers;
+
+namespace PackageManagement.Tests
+{
+ [TestFixture]
+ public class UpdatePackageInAllProjectsTests
+ {
+ UpdatePackageInAllProjects updatePackageInAllProjects;
+ FakePackageManagementSolution fakeSolution;
+ FakePackageRepository fakeSourceRepository;
+ List updateActions;
+
+ void CreateUpdatePackageInAllProjects(string packageId)
+ {
+ CreateUpdatePackageInAllProjects(packageId, new Version("1.0"));
+ }
+
+ void CreateUpdatePackageInAllProjects(string packageId, Version version)
+ {
+ fakeSolution = new FakePackageManagementSolution();
+ fakeSourceRepository = new FakePackageRepository();
+ var packageReference = new PackageReference(packageId, version, null);
+ updatePackageInAllProjects = new UpdatePackageInAllProjects(packageReference, fakeSolution, fakeSourceRepository);
+ }
+
+ void CreateUpdatePackageInAllProjects()
+ {
+ CreateUpdatePackageInAllProjects("MyPackageId");
+ }
+
+ void CallCreateActions()
+ {
+ IEnumerable actions = updatePackageInAllProjects.CreateActions();
+ updateActions = actions.ToList();
+ }
+
+ UpdatePackageAction FirstUpdateAction {
+ get { return updateActions[0]; }
+ }
+
+ FakePackageManagementProject AddProjectToSolution(string projectName)
+ {
+ return fakeSolution.AddFakeProject(projectName);
+ }
+
+ FakePackageManagementProject FirstProjectInSolution {
+ get { return fakeSolution.FakeProjects[0]; }
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_ReturnsOneAction()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ Assert.AreEqual(1, updateActions.Count);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_UpdateActionCreatedFromProject()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ UpdatePackageAction action = FirstUpdateAction;
+ UpdatePackageAction expectedAction = FirstProjectInSolution.FirstFakeUpdatePackageActionCreated;
+
+ Assert.AreEqual(expectedAction, action);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_UpdateActionCreatedUsingSourceRepositoryPassedInConstructor()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ IPackageRepository repository = fakeSolution.SourceRepositoryPassedToGetProjects;
+ FakePackageRepository expectedRepository = fakeSourceRepository;
+
+ Assert.AreEqual(expectedRepository, repository);
+ }
+
+ [Test]
+ public void CreateActions_NoPackagesInSolution_NoActionsReturned()
+ {
+ CreateUpdatePackageInAllProjects();
+ CallCreateActions();
+
+ Assert.AreEqual(0, updateActions.Count);
+ }
+
+ [Test]
+ public void CreateActions_TwoProjectsInSolution_ReturnsTwoActions()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject1");
+ AddProjectToSolution("MyProject2");
+ CallCreateActions();
+
+ Assert.AreEqual(2, updateActions.Count);
+ }
+
+ [Test]
+ public void CreateActions_OnePackageInSolutionWithTwoProjects_ReturnsTwoActionsCreatedFromProjects()
+ {
+ CreateUpdatePackageInAllProjects();
+ FakePackageManagementProject project1 = AddProjectToSolution("MyProject1");
+ FakePackageManagementProject project2 = AddProjectToSolution("MyProject2");
+ CallCreateActions();
+
+ var expectedActions = new UpdatePackageAction[] {
+ project1.FirstFakeUpdatePackageActionCreated,
+ project2.FirstFakeUpdatePackageActionCreated
+ };
+
+ Assert.AreEqual(expectedActions, updateActions);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_PackageIdSetInUpdateAction()
+ {
+ CreateUpdatePackageInAllProjects("MyPackage");
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ string packageId = FirstUpdateAction.PackageId;
+
+ Assert.AreEqual("MyPackage", packageId);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_PackageVersionSetInUpdateAction()
+ {
+ var expectedVersion = new Version("1.2.3.4");
+ CreateUpdatePackageInAllProjects("MyPackage", expectedVersion);
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ Version version = FirstUpdateAction.PackageVersion;
+
+ Assert.AreEqual(expectedVersion, version);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProjectAndScriptRunnerIsSet_UpdateActionUsesSameScriptRunner()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ var expectedRunner = new FakePackageScriptRunner();
+ updatePackageInAllProjects.PackageScriptRunner = expectedRunner;
+ CallCreateActions();
+
+ IPackageScriptRunner runner = FirstUpdateAction.PackageScriptRunner;
+
+ Assert.AreEqual(expectedRunner, runner);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProject_UpdateActionDoesNotUpdatePackageIfProjectDoesNotHavePackage()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ CallCreateActions();
+
+ bool updateIfPackageDoesNotExist = FirstUpdateAction.UpdateIfPackageDoesNotExistInProject;
+
+ Assert.IsFalse(updateIfPackageDoesNotExist);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProjectAndUpdateDependenciesIsFalse_UpdateActionDoesNotUpdateDependencies()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ updatePackageInAllProjects.UpdateDependencies = false;
+ CallCreateActions();
+
+ bool updateDependencies = FirstUpdateAction.UpdateDependencies;
+
+ Assert.IsFalse(updateDependencies);
+ }
+
+ [Test]
+ public void CreateActions_SolutionHasOneProjectAndUpdateDependenciesIsTrue_UpdateActionDoesUpdateDependencies()
+ {
+ CreateUpdatePackageInAllProjects();
+ AddProjectToSolution("MyProject");
+ updatePackageInAllProjects.UpdateDependencies = true;
+ CallCreateActions();
+
+ bool updateDependencies = FirstUpdateAction.UpdateDependencies;
+
+ Assert.IsTrue(updateDependencies);
+ }
+ }
+}