diff --git a/GitTfsTest/Core/TfsInterop/BranchExtensionsTest.cs b/GitTfsTest/Core/TfsInterop/BranchExtensionsTest.cs index 15f25602..0b25864b 100644 --- a/GitTfsTest/Core/TfsInterop/BranchExtensionsTest.cs +++ b/GitTfsTest/Core/TfsInterop/BranchExtensionsTest.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Linq; +using Rhino.Mocks; using Sep.Git.Tfs.Core.TfsInterop; using Xunit; @@ -15,5 +17,52 @@ namespace Sep.Git.Tfs.Test.Core.TfsInterop Assert.NotNull(result); Assert.Empty(result); } + + private BranchTree CreateBranchTree(string tfsPath, BranchTree parent = null) + { + var branchObject = MockRepository.GenerateStub(); + branchObject.Stub(m => m.Path).Return(tfsPath); + + var branchTree = new BranchTree(branchObject); + + if(parent != null) + parent.ChildBranches.Add(branchTree); + return branchTree; + } + + [Fact] + public void WhenGettingChildrenOfTopBranch_ThenReturnAllTheChildren() + { + var trunk = CreateBranchTree("$/Project/Trunk"); + + var branch1 = CreateBranchTree("$/Project/Branch1", trunk); + var branch2 = CreateBranchTree("$/Project/Branch2", trunk); + var branch3 = CreateBranchTree("$/Project/Branch3", trunk); + + IEnumerable result = trunk.GetAllChildren(); + + Assert.NotNull(result); + Assert.Equal(3, result.Count()); + Assert.Equal(new List { branch1, branch2, branch3 }, result); + } + + [Fact] + public void WhenGettingChildrenOfOneBranch_ThenReturnChildrenOfThisBranch() + { + var trunk = CreateBranchTree("$/Project/Trunk"); + + var branch1 = CreateBranchTree("$/Project/Branch1", trunk); + var branch1_1 = CreateBranchTree("$/Project/Branch1.1", branch1); + var branch1_2 = CreateBranchTree("$/Project/Branch1.2", branch1); + + var branch2 = CreateBranchTree("$/Project/Branch2", trunk); + var branch3 = CreateBranchTree("$/Project/Branch3", trunk); + + IEnumerable result = branch1.GetAllChildren(); + + Assert.NotNull(result); + Assert.Equal(2, result.Count()); + Assert.Equal(new List { branch1_1, branch1_2 }, result); + } } } \ No newline at end of file