~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/AddIns/Misc/PackageManagement/Test/Src/UpdateAllPackagesInSolutionTests.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)
 
3
 
 
4
using System;
 
5
using System.Collections.Generic;
 
6
using System.Linq;
 
7
using ICSharpCode.PackageManagement;
 
8
using ICSharpCode.PackageManagement.Design;
 
9
using ICSharpCode.PackageManagement.Scripting;
 
10
using NuGet;
 
11
using NUnit.Framework;
 
12
using PackageManagement.Tests.Helpers;
 
13
 
 
14
namespace PackageManagement.Tests
 
15
{
 
16
        [TestFixture]
 
17
        public class UpdateAllPackagesInSolutionTests
 
18
        {
 
19
                UpdateAllPackagesInSolution updateAllPackagesInSolution;
 
20
                FakePackageManagementSolution fakeSolution;
 
21
                List<UpdatePackageAction> updateActions;
 
22
                FakePackageRepository fakeSourceRepository;
 
23
                
 
24
                void CreateUpdateAllPackagesInSolution()
 
25
                {
 
26
                        fakeSolution = new FakePackageManagementSolution();
 
27
                        fakeSourceRepository = new FakePackageRepository();
 
28
                        updateAllPackagesInSolution = new UpdateAllPackagesInSolution(fakeSolution, fakeSourceRepository);
 
29
                }
 
30
                
 
31
                void AddPackageToSolution(string packageId)
 
32
                {
 
33
                        var package = new FakePackage(packageId, "1.0");
 
34
                        fakeSolution.FakePackagesInReverseDependencyOrder.Add(package);
 
35
                }
 
36
                
 
37
                FakePackageManagementProject AddProjectToSolution(string projectName)
 
38
                {
 
39
                        return fakeSolution.AddFakeProject(projectName);
 
40
                }
 
41
                
 
42
                void CallCreateActions()
 
43
                {
 
44
                        IEnumerable<UpdatePackageAction> actions = updateAllPackagesInSolution.CreateActions();
 
45
                        updateActions = actions.ToList();
 
46
                }
 
47
                
 
48
                UpdatePackageAction FirstUpdateAction {
 
49
                        get { return updateActions[0]; }
 
50
                }
 
51
                
 
52
                FakePackageManagementProject FirstProjectInSolution {
 
53
                        get { return fakeSolution.FakeProjects[0]; }
 
54
                }
 
55
                
 
56
                [Test]
 
57
                public void CreateActions_OnePackageInSolutionWithOneProject_ReturnsOneAction()
 
58
                {
 
59
                        CreateUpdateAllPackagesInSolution();
 
60
                        AddProjectToSolution("MyProject");
 
61
                        AddPackageToSolution("Test");
 
62
                        CallCreateActions();
 
63
                        
 
64
                        Assert.AreEqual(1, updateActions.Count);
 
65
                }
 
66
                
 
67
                [Test]
 
68
                public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionCreatedFromProject()
 
69
                {
 
70
                        CreateUpdateAllPackagesInSolution();
 
71
                        AddProjectToSolution("MyProject");
 
72
                        AddPackageToSolution("Test");
 
73
                        CallCreateActions();
 
74
                        
 
75
                        UpdatePackageAction action = FirstUpdateAction;
 
76
                        UpdatePackageAction expectedAction = FirstProjectInSolution.FirstFakeUpdatePackageActionCreated;
 
77
                        
 
78
                        Assert.AreEqual(expectedAction, action);
 
79
                }
 
80
                
 
81
                [Test]
 
82
                public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionCreatedUsingSourceRepositoryPassedInConstructor()
 
83
                {
 
84
                        CreateUpdateAllPackagesInSolution();
 
85
                        AddProjectToSolution("MyProject");
 
86
                        AddPackageToSolution("Test");
 
87
                        CallCreateActions();
 
88
                        
 
89
                        IPackageRepository repository = fakeSolution.SourceRepositoryPassedToGetProjects;
 
90
                        FakePackageRepository expectedRepository = fakeSourceRepository;
 
91
                        
 
92
                        Assert.AreEqual(expectedRepository, repository);
 
93
                }
 
94
                
 
95
                [Test]
 
96
                public void CreateActions_NoPackagesInSolution_NoActionsReturned()
 
97
                {
 
98
                        CreateUpdateAllPackagesInSolution();
 
99
                        CallCreateActions();
 
100
                        
 
101
                        Assert.AreEqual(0, updateActions.Count);
 
102
                }
 
103
                
 
104
                [Test]
 
105
                public void CreateActions_TwoPackagesInSolutionWithOneProject_ReturnsTwoActions()
 
106
                {
 
107
                        CreateUpdateAllPackagesInSolution();
 
108
                        AddProjectToSolution("MyProject");
 
109
                        AddPackageToSolution("Test1");
 
110
                        AddPackageToSolution("Test2");
 
111
                        CallCreateActions();
 
112
                        
 
113
                        Assert.AreEqual(2, updateActions.Count);
 
114
                }
 
115
                
 
116
                [Test]
 
117
                public void CreateActions_TwoPackagesInSolutionWithOneProject_ReturnsTwoActionsWithPackageIdsForTwoPackages()
 
118
                {
 
119
                        CreateUpdateAllPackagesInSolution();
 
120
                        FakePackageManagementProject project = AddProjectToSolution("MyProject");
 
121
                        AddPackageToSolution("Test1");
 
122
                        AddPackageToSolution("Test2");
 
123
                        CallCreateActions();
 
124
                        
 
125
                        string[] packageIds = new string[] {
 
126
                                project.FirstFakeUpdatePackageActionCreated.PackageId,
 
127
                                project.SecondFakeUpdatePackageActionCreated.PackageId
 
128
                        };
 
129
                        
 
130
                        string [] expectedPackageIds = new string[] {
 
131
                                "Test1",
 
132
                                "Test2"
 
133
                        };
 
134
                        
 
135
                        Assert.AreEqual(expectedPackageIds, packageIds);
 
136
                }
 
137
                
 
138
                [Test]
 
139
                public void CreateActions_OnePackageInSolutionWithTwoProjects_ReturnsTwoActions()
 
140
                {
 
141
                        CreateUpdateAllPackagesInSolution();
 
142
                        AddProjectToSolution("MyProject1");
 
143
                        AddProjectToSolution("MyProject2");
 
144
                        AddPackageToSolution("Test");
 
145
                        CallCreateActions();
 
146
                        
 
147
                        Assert.AreEqual(2, updateActions.Count);
 
148
                }
 
149
                
 
150
                [Test]
 
151
                public void CreateActions_OnePackageInSolutionWithTwoProjects_ReturnsTwoActionsCreatedFromProjects()
 
152
                {
 
153
                        CreateUpdateAllPackagesInSolution();
 
154
                        FakePackageManagementProject project1 = AddProjectToSolution("MyProject1");
 
155
                        FakePackageManagementProject project2 = AddProjectToSolution("MyProject2");
 
156
                        AddPackageToSolution("Test");
 
157
                        CallCreateActions();
 
158
                        
 
159
                        var expectedActions = new UpdatePackageAction[] {
 
160
                                project1.FirstFakeUpdatePackageActionCreated,
 
161
                                project2.FirstFakeUpdatePackageActionCreated
 
162
                        };
 
163
                        
 
164
                        Assert.AreEqual(expectedActions, updateActions);
 
165
                }
 
166
                
 
167
                [Test]
 
168
                public void CreateActions_OnePackageInSolutionWithOneProjectAndScriptRunnerIsSet_UpdateActionUsesSameScriptRunner()
 
169
                {
 
170
                        CreateUpdateAllPackagesInSolution();
 
171
                        AddProjectToSolution("MyProject");
 
172
                        AddPackageToSolution("Test");
 
173
                        var expectedRunner = new FakePackageScriptRunner();
 
174
                        updateAllPackagesInSolution.PackageScriptRunner = expectedRunner;
 
175
                        CallCreateActions();
 
176
                        
 
177
                        IPackageScriptRunner runner = FirstUpdateAction.PackageScriptRunner;
 
178
                        
 
179
                        Assert.AreEqual(expectedRunner, runner);
 
180
                }
 
181
                
 
182
                [Test]
 
183
                public void CreateActions_OnePackageInSolutionWithOneProject_UpdateActionDoesNotUpdatePackageIfProjectDoesNotHavePackage()
 
184
                {
 
185
                        CreateUpdateAllPackagesInSolution();
 
186
                        AddProjectToSolution("MyProject");
 
187
                        AddPackageToSolution("Test");
 
188
                        CallCreateActions();
 
189
                        
 
190
                        bool updateIfPackageDoesNotExist = FirstUpdateAction.UpdateIfPackageDoesNotExistInProject;
 
191
                        
 
192
                        Assert.IsFalse(updateIfPackageDoesNotExist);
 
193
                }
 
194
                
 
195
                [Test]
 
196
                public void CreateActions_OnePackageInSolutionWithOneProjectAndUpdateDependenciesIsFalse_UpdateActionDoesNotUpdateDependencies()
 
197
                {
 
198
                        CreateUpdateAllPackagesInSolution();
 
199
                        AddProjectToSolution("MyProject");
 
200
                        AddPackageToSolution("Test");
 
201
                        updateAllPackagesInSolution.UpdateDependencies = false;
 
202
                        CallCreateActions();
 
203
                        
 
204
                        bool updateDependencies = FirstUpdateAction.UpdateDependencies;
 
205
                        
 
206
                        Assert.IsFalse(updateDependencies);
 
207
                }
 
208
                
 
209
                [Test]
 
210
                public void CreateActions_OnePackageInSolutionWithOneProjectAndUpdateDependenciesIsTrue_UpdateActionDoesUpdateDependencies()
 
211
                {
 
212
                        CreateUpdateAllPackagesInSolution();
 
213
                        AddProjectToSolution("MyProject");
 
214
                        AddPackageToSolution("Test");
 
215
                        updateAllPackagesInSolution.UpdateDependencies = true;
 
216
                        CallCreateActions();
 
217
                        
 
218
                        bool updateDependencies = FirstUpdateAction.UpdateDependencies;
 
219
                        
 
220
                        Assert.IsTrue(updateDependencies);
 
221
                }
 
222
        }
 
223
}