public void BuildModel_Case1_StartingNodeNotInChildLevel_ShouldReturnHierarchicalNodes()
        {
            // @Html.MvcSiteMap().Menu(true, false, true)

            // Arrange
            var                  siteMap         = HtmlHelperTestCases.CreateFakeSiteMapCase1();
            var                  startingNode    = siteMap.RootNode;
            HtmlHelper           helper          = new HtmlHelper(this.viewContext.Object, this.iView.Object);
            MvcSiteMapHtmlHelper helperExtension = new MvcSiteMapHtmlHelper(helper, siteMap, false);

            // Act
            var result = MenuHelper.BuildModel(
                helper: helperExtension,
                sourceMetadata: new SourceMetadataDictionary(),
                startingNode: startingNode,
                startingNodeInChildLevel: false,
                showStartingNode: true,
                maxDepth: Int32.MaxValue,
                drillDownToCurrent: false,
                visibilityAffectsDescendants: true);

            // Assert
            // Tree structure - 3 nodes
            Assert.AreEqual("Home", result.Nodes[0].Title);
            Assert.AreEqual("About", result.Nodes[0].Children[0].Title);
            Assert.AreEqual("Contact", result.Nodes[0].Children[1].Title);

            // Check Counts
            Assert.AreEqual(1, result.Nodes.Count);
            Assert.AreEqual(2, result.Nodes[0].Children.Count);
            Assert.AreEqual(0, result.Nodes[0].Children[0].Children.Count);
            Assert.AreEqual(0, result.Nodes[0].Children[1].Children.Count);
        }
        public void BuildModel_Case1_Default_ShouldReturnAllNodesAtRootLevel()
        {
            // @Html.MvcSiteMap().SiteMap()

            // Arrange
            var                  siteMap         = HtmlHelperTestCases.CreateFakeSiteMapCase1();
            var                  startingNode    = siteMap.RootNode;
            HtmlHelper           helper          = new HtmlHelper(this.viewContext.Object, this.iView.Object);
            MvcSiteMapHtmlHelper helperExtension = new MvcSiteMapHtmlHelper(helper, siteMap, false);

            // Act
            var result = SiteMapHelper.BuildModel(
                helper: helperExtension,
                sourceMetadata: new SourceMetadataDictionary(),
                startingNode: startingNode,
                startingNodeInChildLevel: true,
                visibilityAffectsDescendants: true);

            // Assert
            // Flat structure - 3 nodes
            Assert.AreEqual("Home", result.Nodes[0].Title);
            Assert.AreEqual("About", result.Nodes[1].Title);
            Assert.AreEqual("Contact", result.Nodes[2].Title);

            // Check counts
            Assert.AreEqual(3, result.Nodes.Count);
            Assert.AreEqual(0, result.Nodes[0].Children.Count);
            Assert.AreEqual(0, result.Nodes[1].Children.Count);
            Assert.AreEqual(0, result.Nodes[2].Children.Count);
        }