9 changed files with 513 additions and 6 deletions
@ -0,0 +1,62 @@
@@ -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<IPackageManagementProject> 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<UpdatePackageAction> CreateActions() |
||||
{ |
||||
GetProjects(); |
||||
foreach (IPackageManagementProject project in projects) { |
||||
yield return CreateUpdatePackageAction(project); |
||||
} |
||||
} |
||||
|
||||
void GetProjects() |
||||
{ |
||||
projects = new List<IPackageManagementProject>(); |
||||
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; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,211 @@
@@ -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<UpdatePackageAction> 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<UpdatePackageAction> 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); |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue