1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using System.Collections.Generic;
7
using ICSharpCode.PackageManagement;
8
using ICSharpCode.PackageManagement.Design;
9
using ICSharpCode.PackageManagement.Scripting;
11
using NUnit.Framework;
12
using PackageManagement.Tests.Helpers;
14
namespace PackageManagement.Tests
17
public class UpdateAllPackagesInSolutionTests
19
UpdateAllPackagesInSolution updateAllPackagesInSolution;
20
FakePackageManagementSolution fakeSolution;
21
List<UpdatePackageAction> updateActions;
22
FakePackageRepository fakeSourceRepository;
24
void CreateUpdateAllPackagesInSolution()
26
fakeSolution = new FakePackageManagementSolution();
27
fakeSourceRepository = new FakePackageRepository();
28
updateAllPackagesInSolution = new UpdateAllPackagesInSolution(fakeSolution, fakeSourceRepository);
31
void AddPackageToSolution(string packageId)
33
var package = new FakePackage(packageId, "1.0");
34
fakeSolution.FakePackagesInReverseDependencyOrder.Add(package);
37
FakePackageManagementProject AddProjectToSolution(string projectName)
39
return fakeSolution.AddFakeProject(projectName);
42
void CallCreateActions()
44
IEnumerable<UpdatePackageAction> actions = updateAllPackagesInSolution.CreateActions();
45
updateActions = actions.ToList();
48
UpdatePackageAction FirstUpdateAction {
49
get { return updateActions[0]; }
52
FakePackageManagementProject FirstProjectInSolution {
53
get { return fakeSolution.FakeProjects[0]; }
57
public void CreateActions_OnePackageInSolutionWithOneProject_ReturnsOneAction()
59
CreateUpdateAllPackagesInSolution();
60
AddProjectToSolution("MyProject");
61
AddPackageToSolution("Test");
64
Assert.AreEqual(1, updateActions.Count);
68
public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionCreatedFromProject()
70
CreateUpdateAllPackagesInSolution();
71
AddProjectToSolution("MyProject");
72
AddPackageToSolution("Test");
75
UpdatePackageAction action = FirstUpdateAction;
76
UpdatePackageAction expectedAction = FirstProjectInSolution.FirstFakeUpdatePackageActionCreated;
78
Assert.AreEqual(expectedAction, action);
82
public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionCreatedUsingSourceRepositoryPassedInConstructor()
84
CreateUpdateAllPackagesInSolution();
85
AddProjectToSolution("MyProject");
86
AddPackageToSolution("Test");
89
IPackageRepository repository = fakeSolution.SourceRepositoryPassedToGetProjects;
90
FakePackageRepository expectedRepository = fakeSourceRepository;
92
Assert.AreEqual(expectedRepository, repository);
96
public void CreateActions_NoPackagesInSolution_NoActionsReturned()
98
CreateUpdateAllPackagesInSolution();
101
Assert.AreEqual(0, updateActions.Count);
105
public void CreateActions_TwoPackagesInSolutionWithOneProject_ReturnsTwoActions()
107
CreateUpdateAllPackagesInSolution();
108
AddProjectToSolution("MyProject");
109
AddPackageToSolution("Test1");
110
AddPackageToSolution("Test2");
113
Assert.AreEqual(2, updateActions.Count);
117
public void CreateActions_TwoPackagesInSolutionWithOneProject_ReturnsTwoActionsWithPackageIdsForTwoPackages()
119
CreateUpdateAllPackagesInSolution();
120
FakePackageManagementProject project = AddProjectToSolution("MyProject");
121
AddPackageToSolution("Test1");
122
AddPackageToSolution("Test2");
125
string[] packageIds = new string[] {
126
project.FirstFakeUpdatePackageActionCreated.PackageId,
127
project.SecondFakeUpdatePackageActionCreated.PackageId
130
string [] expectedPackageIds = new string[] {
135
Assert.AreEqual(expectedPackageIds, packageIds);
139
public void CreateActions_OnePackageInSolutionWithTwoProjects_ReturnsTwoActions()
141
CreateUpdateAllPackagesInSolution();
142
AddProjectToSolution("MyProject1");
143
AddProjectToSolution("MyProject2");
144
AddPackageToSolution("Test");
147
Assert.AreEqual(2, updateActions.Count);
151
public void CreateActions_OnePackageInSolutionWithTwoProjects_ReturnsTwoActionsCreatedFromProjects()
153
CreateUpdateAllPackagesInSolution();
154
FakePackageManagementProject project1 = AddProjectToSolution("MyProject1");
155
FakePackageManagementProject project2 = AddProjectToSolution("MyProject2");
156
AddPackageToSolution("Test");
159
var expectedActions = new UpdatePackageAction[] {
160
project1.FirstFakeUpdatePackageActionCreated,
161
project2.FirstFakeUpdatePackageActionCreated
164
Assert.AreEqual(expectedActions, updateActions);
168
public void CreateActions_OnePackageInSolutionWithOneProjectAndScriptRunnerIsSet_UpdateActionUsesSameScriptRunner()
170
CreateUpdateAllPackagesInSolution();
171
AddProjectToSolution("MyProject");
172
AddPackageToSolution("Test");
173
var expectedRunner = new FakePackageScriptRunner();
174
updateAllPackagesInSolution.PackageScriptRunner = expectedRunner;
177
IPackageScriptRunner runner = FirstUpdateAction.PackageScriptRunner;
179
Assert.AreEqual(expectedRunner, runner);
183
public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionDoesNotUpdatePackageIfProjectDoesNotHavePackage()
185
CreateUpdateAllPackagesInSolution();
186
AddProjectToSolution("MyProject");
187
AddPackageToSolution("Test");
190
bool updateIfPackageDoesNotExist = FirstUpdateAction.UpdateIfPackageDoesNotExistInProject;
192
Assert.IsFalse(updateIfPackageDoesNotExist);
196
public void CreateActions_OnePackageInSolutionWithOneProjectAndUpdateDependenciesIsFalse_UpdateActionDoesNotUpdateDependencies()
198
CreateUpdateAllPackagesInSolution();
199
AddProjectToSolution("MyProject");
200
AddPackageToSolution("Test");
201
updateAllPackagesInSolution.UpdateDependencies = false;
204
bool updateDependencies = FirstUpdateAction.UpdateDependencies;
206
Assert.IsFalse(updateDependencies);
210
public void CreateActions_OnePackageInSolutionWithOneProjectAndUpdateDependenciesIsTrue_UpdateActionDoesUpdateDependencies()
212
CreateUpdateAllPackagesInSolution();
213
AddProjectToSolution("MyProject");
214
AddPackageToSolution("Test");
215
updateAllPackagesInSolution.UpdateDependencies = true;
218
bool updateDependencies = FirstUpdateAction.UpdateDependencies;
220
Assert.IsTrue(updateDependencies);