public TeamTreeNode ConstructFromRoot(User user) { var result = new TeamTreeNode { This = user, Children = FindAndGenerateChildren(user.UserId) }; return(result); }
private bool TreesAreEqual(TeamTreeNode tree1, TeamTreeNode tree2) { if (tree1 == tree2) { return(true); } if (!UsersAreEqual(tree1.This, tree2.This)) { return(false); } if (tree1.Children == null && tree2.Children == null) { return(true); } if ((tree1.Children == null && tree2.Children != null) || tree1.Children != null && tree2.Children == null) { return(false); } if (tree1.Children.Count() != tree2.Children.Count()) { return(false); } for (int i = 0; i < tree1.Children.Count(); i++) { if (!TreesAreEqual(tree1.Children.ElementAt(i), tree2.Children.ElementAt(i))) { return(false); } } return(true); }
public void ConstructFromRoot_ShouldHaveCorrectStructure() { var rootUserId = 1; var expected = new TeamTreeNode { This = new User { UserId = 1 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 7 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 6 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 4 } }, new TeamTreeNode { This = new User { UserId = 5 } }, new TeamTreeNode { This = new User { UserId = 8 } }, new TeamTreeNode { This = new User { UserId = 10 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 9 } } } } } } } }, new TeamTreeNode { This = new User { UserId = 11 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 2 } }, new TeamTreeNode { This = new User { UserId = 3 }, Children = new List <TeamTreeNode>() { new TeamTreeNode { This = new User { UserId = 12 } } } } } } } }; var daoMock = new Mock <IUsersDao>(MockBehavior.Strict); daoMock.Setup(x => x.SelectByID(It.IsAny <int>())) .Returns <int>(param => GetUserById(param)); daoMock.Setup(x => x.SelectSubordinates(It.IsAny <int>())) .Returns <int>(param => GetSubordinates(param)); var sut = new UserLogic(daoMock.Object, new TeamTreeNodeFactory(daoMock.Object), null); var actual = sut.GetTeamTree(rootUserId); Assert.IsTrue(TreesAreEqual(expected, actual)); }