~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.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.IO;
 
7
using System.Text;
 
8
using System.Xml;
 
9
using ICSharpCode.Core;
 
10
using ICSharpCode.PackageManagement;
 
11
using ICSharpCode.PackageManagement.Design;
 
12
using NuGet;
 
13
using NUnit.Framework;
 
14
using PackageManagement.Tests.Helpers;
 
15
 
 
16
namespace PackageManagement.Tests
 
17
{
 
18
        [TestFixture]
 
19
        public class PackageManagementOptionsTests
 
20
        {
 
21
                Properties properties;
 
22
                PackageManagementOptions options;
 
23
                FakeSettings fakeSettings;
 
24
                
 
25
                void CreateOptions()
 
26
                {
 
27
                        CreateProperties();
 
28
                        CreateSettings();
 
29
                        CreateOptions(properties, fakeSettings);
 
30
                }
 
31
                
 
32
                void CreateProperties()
 
33
                {
 
34
                        properties = new Properties();
 
35
                }
 
36
                
 
37
                void CreateSettings()
 
38
                {
 
39
                        fakeSettings = new FakeSettings();
 
40
                }
 
41
                
 
42
                void CreateOptions(Properties properties)
 
43
                {
 
44
                        CreateSettings();
 
45
                        CreateOptions(properties, fakeSettings);
 
46
                }
 
47
                
 
48
                void CreateOptions(FakeSettings fakeSettings)
 
49
                {
 
50
                        CreateProperties();
 
51
                        options = new PackageManagementOptions(properties, fakeSettings);
 
52
                }
 
53
                
 
54
                void CreateOptions(Properties properties, FakeSettings fakeSettings)
 
55
                {
 
56
                        options = new PackageManagementOptions(properties, fakeSettings);
 
57
                }
 
58
                
 
59
                void SaveOptions()
 
60
                {
 
61
                        StringBuilder xml = new StringBuilder();
 
62
                        StringWriter stringWriter = new StringWriter(xml);
 
63
                        using (XmlTextWriter writer = new XmlTextWriter(stringWriter)) {
 
64
                                properties.WriteProperties(writer);
 
65
                        }
 
66
                }
 
67
                
 
68
                RecentPackageInfo AddRecentPackageToOptions(string id, string version)
 
69
                {
 
70
                        var recentPackage = new RecentPackageInfo(id, new Version(version));
 
71
                        options.RecentPackages.Add(recentPackage);
 
72
                        return recentPackage;
 
73
                }
 
74
                
 
75
                [Test]
 
76
                public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettings()
 
77
                {
 
78
                        CreateSettings();
 
79
                        var packageSource = new PackageSource("http://codeplex.com", "Test");
 
80
                        fakeSettings.AddFakePackageSource(packageSource);
 
81
                        CreateOptions(fakeSettings);
 
82
                        
 
83
                        var actualSources = options.PackageSources;
 
84
                        
 
85
                        List<PackageSource> expectedSources = new List<PackageSource>();
 
86
                        expectedSources.Add(packageSource);
 
87
                        
 
88
                        Assert.AreEqual(expectedSources, actualSources);
 
89
                }
 
90
                
 
91
                [Test]
 
92
                public void PackageSources_NoPackageSourceInSavedSettings_ContainsDefaultPackageSource()
 
93
                {
 
94
                        CreateSettings();
 
95
                        CreateOptions(fakeSettings);
 
96
                        
 
97
                        List<PackageSource> expectedSources = new List<PackageSource>();
 
98
                        expectedSources.Add(RegisteredPackageSources.DefaultPackageSource);
 
99
                        
 
100
                        var actualPackageSources = options.PackageSources;
 
101
                        
 
102
                        CollectionAssert.AreEqual(expectedSources, actualPackageSources);
 
103
                }
 
104
                
 
105
                [Test]
 
106
                public void PackageSources_NoPackageSourceInSavedSettings_DefaultPackageSourceAddedToSettings()
 
107
                {
 
108
                        CreateSettings();
 
109
                        CreateOptions(fakeSettings);
 
110
                        
 
111
                        var packageSources = options.PackageSources;
 
112
                        
 
113
                        var defaultSource = RegisteredPackageSources.DefaultPackageSource;
 
114
                        
 
115
                        var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>>();
 
116
                        string name = defaultSource.Name;
 
117
                        string sourceUrl = defaultSource.Source;
 
118
                        expectedSavedPackageSourceSettings.Add(new KeyValuePair<string, string>(name, sourceUrl));
 
119
                        
 
120
                        var actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection();
 
121
                        
 
122
                        Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
 
123
                }
 
124
                
 
125
                [Test]
 
126
                public void PackageSources_OnePackageSourceAdded_PackageSourceSavedInSettings()
 
127
                {
 
128
                        CreateSettings();
 
129
                        CreateOptions(fakeSettings);
 
130
                        var registeredPackageSources = options.PackageSources;
 
131
                        
 
132
                        var packageSource = new PackageSource("http://codeplex.com", "Test");
 
133
                        registeredPackageSources.Clear();
 
134
                        registeredPackageSources.Add(packageSource);
 
135
                        
 
136
                        var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>>();
 
137
                        expectedSavedPackageSourceSettings.Add(new KeyValuePair<string, string>("Test", "http://codeplex.com"));
 
138
                        
 
139
                        var actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection();
 
140
                        
 
141
                        Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
 
142
                }
 
143
                
 
144
                [Test]
 
145
                public void PackageSources_OnePackageSourceAdded_PackageSourcesSectionDeletedFromSettings()
 
146
                {
 
147
                        CreateSettings();
 
148
                        CreateOptions(fakeSettings);
 
149
                        var registeredPackageSources = options.PackageSources;  
 
150
                        
 
151
                        var packageSource = new PackageSource("http://codeplex.com", "Test");
 
152
                        registeredPackageSources.Clear();
 
153
                        registeredPackageSources.Add(packageSource);
 
154
                        
 
155
                        bool sectionDeleted = fakeSettings.IsPackageSourcesSectionDeleted;
 
156
                        
 
157
                        Assert.IsTrue(sectionDeleted);
 
158
                }
 
159
                
 
160
                [Test]
 
161
                public void PackageSources_SettingsFilesDoesNotExistSoSettingsReturnsNullForPackageSourcesSection_DoesNotThrowException()
 
162
                {
 
163
                        CreateSettings();
 
164
                        fakeSettings.MakePackageSourceSectionsNull();
 
165
                        CreateOptions(fakeSettings);
 
166
                        
 
167
                        RegisteredPackageSources packageSources = null;
 
168
                        Assert.DoesNotThrow(() => packageSources = options.PackageSources);
 
169
                }
 
170
                
 
171
                [Test]
 
172
                public void ActivePackageSource_NoInitialPropertiesSet_ReturnsNull()
 
173
                {
 
174
                        CreateOptions();
 
175
                        PackageSource actualSource = options.ActivePackageSource;
 
176
                        Assert.IsNull(options.ActivePackageSource);
 
177
                }
 
178
                
 
179
                [Test]
 
180
                public void ActivePackageSource_SourceChanged_ActivePackageSourceUpdatedInSettings()
 
181
                {
 
182
                        CreateOptions();
 
183
                        var packageSource = new PackageSource("http://sharpdevelop.com", "Test");
 
184
                        
 
185
                        options.ActivePackageSource = packageSource;
 
186
                        
 
187
                        var expectedKeyValuePair = new KeyValuePair<string, string>("Test", "http://sharpdevelop.com");
 
188
                        var actualKeyValuePair = fakeSettings.GetValuePassedToSetValueForActivePackageSourceSection();
 
189
                        
 
190
                        Assert.AreEqual(expectedKeyValuePair, actualKeyValuePair);
 
191
                }
 
192
                
 
193
                [Test]
 
194
                public void ActivePackageSource_ActivePackageSourceNonNullInSettings_ReturnsActivatePackageSourceInSavedSettings()
 
195
                {
 
196
                        CreateSettings();
 
197
                        var expectedSource = new PackageSource("http://source-url", "Test");
 
198
                        fakeSettings.SetFakeActivePackageSource(expectedSource);
 
199
                        fakeSettings.AddFakePackageSource(expectedSource);
 
200
                        CreateOptions(fakeSettings);
 
201
                        
 
202
                        PackageSource actualSource = options.ActivePackageSource;
 
203
                        
 
204
                        Assert.AreEqual(expectedSource, actualSource);
 
205
                }
 
206
                
 
207
                [Test]
 
208
                public void ActivePackageSource_SetToNullAfterHavingNonNullValue_ReturnsNull()
 
209
                {
 
210
                        CreateOptions();
 
211
                        var source = new PackageSource("http://source-url", "Test");
 
212
                        options.ActivePackageSource = source;
 
213
                        
 
214
                        options.ActivePackageSource = null;
 
215
                        
 
216
                        PackageSource actualSource = options.ActivePackageSource;
 
217
                        Assert.IsNull(actualSource);
 
218
                }
 
219
        
 
220
                [Test]
 
221
                public void ActivePackageSource_ActivePackageSourceRemovedFromPackageSources_ActivePackageSourceSetToNull()
 
222
                {
 
223
                        CreateOptions();
 
224
                        var source = new PackageSource("http://source-url", "Test");
 
225
                        options.PackageSources.Add(source);
 
226
                        
 
227
                        var differentSource = new PackageSource("http://different-url", "Test2");
 
228
                        options.ActivePackageSource = differentSource;
 
229
                        
 
230
                        var activeSource = options.ActivePackageSource;
 
231
                        
 
232
                        Assert.IsNull(activeSource);
 
233
                }
 
234
                
 
235
                [Test]
 
236
                public void ActivePackageSource_ActivePackageSourceChanged_ActivePackageSourceSectionRemovedFromSettings()
 
237
                {
 
238
                        CreateOptions();
 
239
                        
 
240
                        options.ActivePackageSource = new PackageSource("http://sharpdevelop.com", "Test");
 
241
                        
 
242
                        bool sectionDeleted = fakeSettings.IsActivePackageSourceSectionDeleted;
 
243
                        
 
244
                        Assert.IsTrue(sectionDeleted);
 
245
                }
 
246
                
 
247
                [Test]
 
248
                public void ActivePackageSource_OneActivePackageSourceInSettingsAndActivePackageSourceSetToNull_ActivePackageSourceSectionRemoved()
 
249
                {
 
250
                        CreateSettings();
 
251
                        var expectedSource = new PackageSource("http://source-url", "Test");
 
252
                        fakeSettings.SetFakeActivePackageSource(expectedSource);
 
253
                        fakeSettings.AddFakePackageSource(expectedSource);
 
254
                        CreateOptions(fakeSettings);
 
255
                        
 
256
                        options.ActivePackageSource = null;
 
257
                        
 
258
                        bool sectionRemoved = fakeSettings.IsActivePackageSourceSectionDeleted;
 
259
                        
 
260
                        Assert.IsTrue(sectionRemoved);
 
261
                }
 
262
                
 
263
                [Test]
 
264
                public void ActivePackageSource_SettingsFilesDoesNotExistSoSettingsReturnsNullForActivePackageSourceSection_DoesNotThrowException()
 
265
                {
 
266
                        CreateSettings();
 
267
                        fakeSettings.MakeActivePackageSourceSectionNull();
 
268
                        CreateOptions(fakeSettings);
 
269
                        
 
270
                        PackageSource activePackageSource = null;
 
271
                        Assert.DoesNotThrow(() => activePackageSource = options.ActivePackageSource);
 
272
                }
 
273
                
 
274
                [Test]
 
275
                public void RecentPackages_OneRecentPackageAddedAndOptionsReloadedFromSavedProperties_ContainsOneRecentPackageThatWasSavedPreviously()
 
276
                {
 
277
                        CreateOptions();
 
278
                        var package = new FakePackage("Test");
 
279
                        var recentPackage = new RecentPackageInfo(package);
 
280
                        options.RecentPackages.Add(recentPackage);
 
281
                        CreateOptions(properties);
 
282
                        
 
283
                        var recentPackages = options.RecentPackages;
 
284
                        
 
285
                        var expectedRecentPackages = new RecentPackageInfo[] {
 
286
                                new RecentPackageInfo(package)
 
287
                        };
 
288
                        
 
289
                        RecentPackageInfoCollectionAssert.AreEqual(expectedRecentPackages, recentPackages);
 
290
                }
 
291
                
 
292
                [Test]
 
293
                public void RecentPackages_SaveRecentPackages_DoesNotThrowInvalidOperationException()
 
294
                {
 
295
                        CreateOptions();
 
296
                        var recentPackage = AddRecentPackageToOptions("id", "1.0");
 
297
                        
 
298
                        Assert.DoesNotThrow(() => SaveOptions());
 
299
                }
 
300
                
 
301
                [Test]
 
302
                public void ActivePackageSource_AggregatePackageSourceIsActivePackageSourceInSettings_ReturnsAggregatePackageSource()
 
303
                {
 
304
                        CreateSettings();
 
305
                        var expectedPackageSource = RegisteredPackageSourceSettings.AggregatePackageSource;
 
306
                        fakeSettings.SetFakeActivePackageSource(expectedPackageSource);
 
307
                        CreateOptions(fakeSettings);
 
308
                        
 
309
                        var activePackageSource = options.ActivePackageSource;
 
310
                        
 
311
                        Assert.AreEqual(expectedPackageSource, activePackageSource);
 
312
                }
 
313
        }
 
314
}