Skip to content

Commit b13d4a5

Browse files
committed
SCPresenter cleanup closes #595
1 parent 2881772 commit b13d4a5

File tree

1 file changed

+64
-101
lines changed

1 file changed

+64
-101
lines changed

RubberduckTests/SourceControl/SCPresenterTests.cs

Lines changed: 64 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
using Rubberduck.UI.SourceControl;
1111
using RubberduckTests.Mocks;
1212

13+
// ReSharper disable UnusedVariable
14+
// Resharper thinks the presenter and toolWindow aren't used, but I promise they are.
15+
1316
namespace RubberduckTests.SourceControl
1417
{
1518
[TestClass]
@@ -19,7 +22,9 @@ public class ScPresenterTests
1922
private Windows _windows;
2023
private Mock<AddIn> _addIn;
2124
private Mock<Window> _window;
25+
#pragma warning disable 169
2226
private object _toolWindow;
27+
#pragma warning restore 169
2328

2429
private Mock<ISourceControlView> _view;
2530

@@ -75,6 +80,35 @@ public void InitializeMocks()
7580
.Returns(_provider.Object);
7681
}
7782

83+
private SourceControlPresenter CreatePresenter()
84+
{
85+
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
86+
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
87+
_settingsPresenter.Object,
88+
_folderBrowserFactory.Object, _providerFactory.Object);
89+
return presenter;
90+
}
91+
92+
private void SetupValidVbProject()
93+
{
94+
var project = new Mock<VBProject>().SetupProperty(p => p.Name, DummyRepoName);
95+
_vbe.SetupProperty(vbe => vbe.ActiveVBProject, project.Object);
96+
}
97+
98+
private void VerifyOffline()
99+
{
100+
Assert.AreEqual("Offline", _view.Object.Status);
101+
_changesPresenter.Verify(c => c.Refresh(), Times.Never);
102+
_branchesPresenter.Verify(b => b.RefreshView(), Times.Never);
103+
}
104+
105+
private void VerifyChildPresentersHaveProviders()
106+
{
107+
Assert.IsNotNull(_settingsPresenter.Object.Provider, "_settingsPresenter.Provider was null");
108+
Assert.IsNotNull(_branchesPresenter, "_branchesPresenter.Provider was null");
109+
Assert.IsNotNull(_changesPresenter, "_changesPresenter.Provider was null");
110+
}
111+
78112
[TestMethod]
79113
public void ChangesCurrentBranchRefreshesWhenBranchIsCheckedOut()
80114
{
@@ -101,6 +135,7 @@ public void ChangesCurrentBranchRefreshesWhenBranchIsCheckedOut()
101135
branchesPresenter.Provider = provider.Object;
102136
changesPresenter.Provider = provider.Object;
103137

138+
//purposely createing a new presenter with specific child presenters
104139
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
105140
_view.Object, changesPresenter, branchesPresenter,
106141
_settingsPresenter.Object,
@@ -123,10 +158,7 @@ public void BranchesRefreshOnRefreshEvent()
123158

124159
SetupValidVbProject();
125160

126-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
127-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
128-
_settingsPresenter.Object,
129-
_folderBrowserFactory.Object, _providerFactory.Object);
161+
var presenter = CreatePresenter();
130162

131163
//act
132164
_view.Raise(v => v.RefreshData += null, new EventArgs());
@@ -144,10 +176,7 @@ public void ChangesRefreshOnRefreshEvent()
144176

145177
SetupValidVbProject();
146178

147-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
148-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
149-
_settingsPresenter.Object,
150-
_folderBrowserFactory.Object, _providerFactory.Object);
179+
var presenter = CreatePresenter();
151180

152181
//act
153182
_view.Raise(v => v.RefreshData += null, new EventArgs());
@@ -162,20 +191,15 @@ public void StatusIsOfflineWhenNoRepoIsFoundInConfig()
162191
//arrange
163192
_configService.Setup(c => c.LoadConfiguration()).Returns(new SourceControlConfiguration());
164193

165-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
166-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
167-
_settingsPresenter.Object,
168-
_folderBrowserFactory.Object, _providerFactory.Object);
194+
var presenter = CreatePresenter();
169195

170196
SetupValidVbProject();
171197

172198
//act
173199
presenter.RefreshChildren();
174200

175201
//assert
176-
Assert.AreEqual("Offline", _view.Object.Status);
177-
_changesPresenter.Verify(c => c.Refresh(), Times.Never);
178-
_branchesPresenter.Verify(b => b.RefreshView(), Times.Never);
202+
VerifyOffline();
179203
}
180204

181205
[TestMethod]
@@ -187,18 +211,13 @@ public void StatusIsOfflineWhenRepoListIsEmpty()
187211

188212
SetupValidVbProject();
189213

190-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
191-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
192-
_settingsPresenter.Object,
193-
_folderBrowserFactory.Object, _providerFactory.Object);
214+
var presenter = CreatePresenter();
194215

195216
//act
196217
presenter.RefreshChildren();
197218

198219
//assert
199-
Assert.AreEqual("Offline", _view.Object.Status);
200-
_changesPresenter.Verify(c => c.Refresh(), Times.Never);
201-
_branchesPresenter.Verify(b => b.RefreshView(), Times.Never);
220+
VerifyOffline();
202221
}
203222

204223
[TestMethod]
@@ -211,44 +230,34 @@ public void StatusIsOfflineIfNoMatchingRepoExists()
211230
var project = new Mock<VBProject>().SetupProperty(p => p.Name, "FooBar");
212231
_vbe.SetupProperty(vbe => vbe.ActiveVBProject, project.Object);
213232

214-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
215-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
216-
_settingsPresenter.Object,
217-
_folderBrowserFactory.Object, _providerFactory.Object);
233+
var presenter = CreatePresenter();
218234

219235
//act
220236
presenter.RefreshChildren();
221237

222238
//assert
223-
Assert.AreEqual("Offline", _view.Object.Status);
224-
_changesPresenter.Verify(c => c.Refresh(), Times.Never);
225-
_branchesPresenter.Verify(b => b.RefreshView(), Times.Never);
239+
VerifyOffline();
226240
}
227241

228242
[TestMethod]
229243
public void StatusIsOfflineWhenMultipleReposAreFound()
230244
{
231245
//arrange
232246
var config = GetDummyConfig();
233-
config.Repositories.Add(new Repository() { Name = dummyRepoName });
247+
config.Repositories.Add(new Repository() { Name = DummyRepoName });
234248

235249
_configService.Setup(c => c.LoadConfiguration())
236250
.Returns(config);
237251

238252
SetupValidVbProject();
239253

240-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
241-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
242-
_settingsPresenter.Object,
243-
_folderBrowserFactory.Object, _providerFactory.Object);
254+
var presenter = CreatePresenter();
244255

245256
//act
246257
presenter.RefreshChildren();
247258

248259
//assert
249-
Assert.AreEqual("Offline", _view.Object.Status);
250-
_changesPresenter.Verify(c => c.Refresh(), Times.Never);
251-
_branchesPresenter.Verify(b => b.RefreshView(), Times.Never);
260+
VerifyOffline();
252261

253262
}
254263

@@ -261,10 +270,7 @@ public void StatusIsOnlineWhenRepoIsFound()
261270

262271
SetupValidVbProject();
263272

264-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
265-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
266-
_settingsPresenter.Object,
267-
_folderBrowserFactory.Object, _providerFactory.Object);
273+
var presenter = CreatePresenter();
268274

269275
//act
270276
presenter.RefreshChildren();
@@ -284,18 +290,15 @@ public void ChildPresentersHaveValidProviderIfRepoIsFoundInConfig()
284290

285291
_changesPresenter.SetupProperty(c => c.Provider);
286292
_branchesPresenter.SetupProperty(b => b.Provider);
293+
_settingsPresenter.SetupProperty(s => s.Provider);
287294

288-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
289-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
290-
_settingsPresenter.Object,
291-
_folderBrowserFactory.Object, _providerFactory.Object);
295+
var presenter = CreatePresenter();
292296

293297
//act
294298
presenter.RefreshChildren();
295299

296300
//assert
297-
Assert.IsNotNull(_changesPresenter.Object.Provider);
298-
Assert.IsNotNull(_branchesPresenter.Object.Provider);
301+
VerifyChildPresentersHaveProviders();
299302
}
300303

301304
[TestMethod]
@@ -304,10 +307,7 @@ public void InitRepository_WhenUserCancels_RepoIsNotAddedToConfig()
304307
//arrange
305308
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.Cancel);
306309

307-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
308-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
309-
_settingsPresenter.Object,
310-
_folderBrowserFactory.Object, _providerFactory.Object);
310+
var presenter = CreatePresenter();
311311

312312
//act
313313
_view.Raise(v => v.InitializeNewRepository +=null, EventArgs.Empty);
@@ -322,10 +322,7 @@ public void InitRepository_WhenUserCancels_RepoIsNotCreated()
322322
//arrange
323323
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.Cancel);
324324

325-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
326-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
327-
_settingsPresenter.Object,
328-
_folderBrowserFactory.Object, _providerFactory.Object);
325+
var presenter = CreatePresenter();
329326

330327
//act
331328
_view.Raise(v => v.InitializeNewRepository += null, EventArgs.Empty);
@@ -344,10 +341,7 @@ public void InitRepository_WhenUserConfirms_RepoIsAddedToConfig()
344341
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.OK);
345342
_folderBrowser.SetupProperty(b => b.SelectedPath, @"C:\path\to\repo\");
346343

347-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
348-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
349-
_settingsPresenter.Object,
350-
_folderBrowserFactory.Object, _providerFactory.Object);
344+
var presenter = CreatePresenter();
351345

352346
//act
353347
_view.Raise(v => v.InitializeNewRepository += null, EventArgs.Empty);
@@ -366,10 +360,7 @@ public void InitRepository_WhenUserConfirms_RepoIsInitalized()
366360
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.OK);
367361
_folderBrowser.SetupProperty(b => b.SelectedPath, @"C:\path\to\repo\");
368362

369-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
370-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
371-
_settingsPresenter.Object,
372-
_folderBrowserFactory.Object, _providerFactory.Object);
363+
var presenter = CreatePresenter();
373364

374365
//act
375366
_view.Raise(v => v.InitializeNewRepository += null, EventArgs.Empty);
@@ -384,10 +375,7 @@ public void OpenWorkingDir_WhenUserCancels_RepoIsNotAddedToConfig()
384375
//arrange
385376
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.Cancel);
386377

387-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
388-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
389-
_settingsPresenter.Object,
390-
_folderBrowserFactory.Object, _providerFactory.Object);
378+
var presenter = CreatePresenter();
391379

392380
//act
393381
_view.Raise(v => v.OpenWorkingDirectory += null, EventArgs.Empty);
@@ -408,10 +396,7 @@ public void OpenWorkingDir_WhenUserConfirms_RepoIsAddedToConfig()
408396
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.OK);
409397
_folderBrowser.SetupProperty(b => b.SelectedPath, @"C:\path\to\repo\");
410398

411-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
412-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
413-
_settingsPresenter.Object,
414-
_folderBrowserFactory.Object, _providerFactory.Object);
399+
var presenter = CreatePresenter();
415400

416401
//act
417402
_view.Raise(v => v.OpenWorkingDirectory += null, EventArgs.Empty);
@@ -433,10 +418,7 @@ public void InitRepository_WhenUserConfirms_StatusIsOnline()
433418
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.OK);
434419
_folderBrowser.SetupProperty(b => b.SelectedPath, @"C:\path\to\repo\");
435420

436-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
437-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
438-
_settingsPresenter.Object,
439-
_folderBrowserFactory.Object, _providerFactory.Object);
421+
var presenter = CreatePresenter();
440422

441423
//act
442424
_view.Raise(v => v.InitializeNewRepository += null, EventArgs.Empty);
@@ -457,10 +439,7 @@ public void OpenWorkingDir_WhenUserConfirms_StatusIsOnline()
457439
_folderBrowser.Setup(b => b.ShowDialog()).Returns(DialogResult.OK);
458440
_folderBrowser.SetupProperty(b => b.SelectedPath, @"C:\path\to\repo\");
459441

460-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
461-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
462-
_settingsPresenter.Object,
463-
_folderBrowserFactory.Object, _providerFactory.Object);
442+
var presenter = CreatePresenter();
464443

465444
//act
466445
_view.Raise(v => v.OpenWorkingDirectory += null, EventArgs.Empty);
@@ -485,18 +464,13 @@ public void InitRepository_WhenUserConfirms_ChildPresenterSourceControlProviders
485464
_branchesPresenter.SetupProperty(b => b.Provider);
486465
_changesPresenter.SetupProperty(c => c.Provider);
487466

488-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
489-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
490-
_settingsPresenter.Object,
491-
_folderBrowserFactory.Object, _providerFactory.Object);
467+
var presenter = CreatePresenter();
492468

493469
//act
494470
_view.Raise(v => v.OpenWorkingDirectory += null, EventArgs.Empty);
495471

496472
//assert
497-
Assert.IsNotNull(_settingsPresenter.Object.Provider, "_settingsPresenter.Provider was null");
498-
Assert.IsNotNull(_branchesPresenter, "_branchesPresenter.Provider was null");
499-
Assert.IsNotNull(_changesPresenter, "_changesPresenter.Provider was null");
473+
VerifyChildPresentersHaveProviders();
500474
}
501475

502476
[TestMethod]
@@ -515,27 +489,16 @@ public void OpenWorkingDir_WhenUserConfirms_ChildPresenterSourceControlProviders
515489
_branchesPresenter.SetupProperty(b => b.Provider);
516490
_changesPresenter.SetupProperty(c => c.Provider);
517491

518-
var presenter = new SourceControlPresenter(_vbe.Object, _addIn.Object, _configService.Object,
519-
_view.Object, _changesPresenter.Object, _branchesPresenter.Object,
520-
_settingsPresenter.Object,
521-
_folderBrowserFactory.Object, _providerFactory.Object);
492+
var presenter = CreatePresenter();
522493

523494
//act
524495
_view.Raise(v => v.OpenWorkingDirectory += null, EventArgs.Empty);
525496

526497
//assert
527-
Assert.IsNotNull(_settingsPresenter.Object.Provider, "_settingsPresenter.Provider was null");
528-
Assert.IsNotNull(_branchesPresenter, "_branchesPresenter.Provider was null");
529-
Assert.IsNotNull(_changesPresenter, "_changesPresenter.Provider was null");
530-
}
531-
532-
private void SetupValidVbProject()
533-
{
534-
var project = new Mock<VBProject>().SetupProperty(p => p.Name, dummyRepoName);
535-
_vbe.SetupProperty(vbe => vbe.ActiveVBProject, project.Object);
498+
VerifyChildPresentersHaveProviders();
536499
}
537500

538-
private const string dummyRepoName = "SourceControlTest";
501+
private const string DummyRepoName = "SourceControlTest";
539502

540503
private SourceControlConfiguration GetDummyConfig()
541504
{
@@ -552,7 +515,7 @@ private static IRepository GetDummyRepo()
552515
{
553516
return new Repository
554517
(
555-
dummyRepoName,
518+
DummyRepoName,
556519
@"C:\Users\Christopher\Documents\SourceControlTest",
557520
@"https://github.com/ckuhn203/SourceControlTest.git"
558521
);

0 commit comments

Comments
 (0)