Skip to content

Commit

Permalink
published/unpublished tests pass
Browse files Browse the repository at this point in the history
  • Loading branch information
rubberduck203 committed Mar 27, 2015
1 parent 361deed commit f804085
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 16 deletions.
25 changes: 23 additions & 2 deletions RetailCoder.VBE/UI/SourceControl/BranchesPresenter.cs
Expand Up @@ -16,14 +16,35 @@ public BranchesPresenter(ISourceControlProvider provider, IBranchesView view)
{
_provider = provider;
_view = view;

RefreshView();
}

public void RefreshView()
{
_view.Branches = _provider.Branches.Select(b => b.Name).ToList();
_view.CurrentBranch = _provider.CurrentBranch.Name;

var publishedBranchNames = GetFriendlyBranchNames(RemoteBranches());

_view.PublishedBranches = publishedBranchNames;
_view.UnpublishedBranches = _provider.Branches.Where(b => !b.IsRemote
&& publishedBranchNames.All(p => b.Name != p)
)
.Select(b => b.Name)
.ToList();
}

private IList<string> GetFriendlyBranchNames(IEnumerable<IBranch> branches)
{
return branches.Select(
b => b.Name.Split(new[] {'/'})
.Last()
).ToList();
}

private IEnumerable<IBranch> RemoteBranches()
{
return _provider.Branches.Where(b => b.IsRemote);
}
}

}
70 changes: 56 additions & 14 deletions RubberduckTests/SourceControl/BranchesPresenterTests.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rubberduck.SourceControl;
using Rubberduck.UI.SourceControl;
Expand All @@ -10,35 +12,75 @@ namespace RubberduckTests.SourceControl
[TestClass]
public class BranchesPresenterTests
{
[TestMethod]
public void SelectedBranchShouldBeCurrentBranchAfterRefresh()
{
private Mock<ISourceControlProvider> _provider;
private Mock<IBranchesView> _view;
private Branch _intialBranch;
private List<IBranch> _branches;

[TestInitialize]
public void IntializeFixtures()
{
//arrange
var _provider = new Mock<ISourceControlProvider>();
var _view = new Mock<IBranchesView>();
_provider = new Mock<ISourceControlProvider>();
_view = new Mock<IBranchesView>();

var expectedBranch = new Branch("dev", "ref/Heads/dev", false, false);
_intialBranch = new Branch("master", "refs/Heads/master", false, true);

var branches = new List<IBranch>()
_branches = new List<IBranch>()
{
new Branch("master", "refs/Heads/master", false, true),
expectedBranch,
_intialBranch,
new Branch("dev", "ref/Heads/dev", false, false),
new Branch("origin/master", "refs/remotes/origin/master", true, true),
new Branch("origin/dev", "refs/remotes/origin/dev", true, false)
};

_provider.SetupGet(git => git.Branches).Returns(branches);
_provider.SetupGet(git => git.CurrentBranch).Returns(expectedBranch);
_provider.SetupGet(git => git.Branches).Returns(_branches);
_provider.SetupGet(git => git.CurrentBranch).Returns(_intialBranch);
}

_view.SetupProperty(v => v.CurrentBranch);
[TestMethod]
public void SelectedBranchShouldBeCurrentBranchAfterRefresh()
{
//arrange
_view.SetupProperty(v => v.CurrentBranch);
var presenter = new BranchesPresenter(_provider.Object, _view.Object);

//act
var presenter = new BranchesPresenter(_provider.Object, _view.Object);
presenter.RefreshView();

//assert
Assert.AreEqual(_provider.Object.CurrentBranch.Name, _view.Object.CurrentBranch);
}

[TestMethod]
public void PublishedBranchesAreListedAfterRefresh()
{
//arrange
_view.SetupProperty(v => v.PublishedBranches);
var presenter = new BranchesPresenter(_provider.Object, _view.Object);

//act
presenter.RefreshView();

//assert
var expected = new List<string>() {"master"};
CollectionAssert.AreEqual(expected, _view.Object.PublishedBranches.ToList());
}

[TestMethod]
public void UnPublishedBranchesAreListedAfterRefresh()
{
//arrange
_view.SetupProperty(v => v.UnpublishedBranches);
var presenter = new BranchesPresenter(_provider.Object, _view.Object);

//act
presenter.RefreshView();

//assert
var expected = new List<string>() {"dev"};
CollectionAssert.AreEqual(expected, _view.Object.UnpublishedBranches.ToList());
}


}
}

0 comments on commit f804085

Please sign in to comment.