/// <summary> /// Deletes the specified node. /// </summary> /// <param name="node">The node.</param> public void Delete(TrieNode node) { var parent = this.RootNode.Flatten(x => x.Children).SingleOrDefault(x => x.Children.Contains(node)); if (parent != null) { parent.Children.Remove(node); } }
public void Can_Resolve_Home_Page_With_Default_Action(string path) { // Given //var store = this.SetupContext(); var routeResolverTrie = A.Fake<IRouteResolverTrie>(); //var mapper = A.Fake<IControllerMapper>(); //A.CallTo(() => mapper.GetControllerName(typeof (FakeController))).Returns("FakeController"); //A.CallTo(() => mapper.ControllerHasAction("FakeController", "index")).Returns(true); // When ResolveResult data; using (var store = this.SetupContext()) { using (var session = store.OpenSession()) { var node = new TrieNode { PageId = "pages/1" }; var page = new FakePage {Id = "pages/1"}; var structureInfo = new Trie { Id = DefaultBrickPileBootstrapper.TrieId, RootNode = node }; session.Store(structureInfo); session.Store(page); session.SaveChanges(); var resolver = new DefaultRouteResolver(routeResolverTrie); A.CallTo(() => routeResolverTrie.LoadTrie()).Returns(structureInfo); data = resolver.Resolve(path); } //Then Assert.NotNull(data); Assert.Equal(data.TrieNode.PageId, "pages/1"); Assert.Equal("index", data.Action); } }
public void Can_Resolve_Home_Page_With_Default_Action(string path) { // Given var store = NewDocumentStore(); var mapper = A.Fake<IControllerMapper>(); var context = A.Fake<HttpContextBase>(); var trie = A.Fake<IRouteResolverTrie>(); A.CallTo(() => context.Request.Path).Returns(path); A.CallTo(() => mapper.GetControllerName(typeof (FakeController))).Returns("FakeController"); A.CallTo(() => mapper.ControllerHasAction("FakeController", "index")).Returns(true); // When RouteData data; using (var session = store.OpenSession()) { var node = new TrieNode { PageId = "pages/1" }; var page = new FakePage { Id = "pages/1" }; var structureInfo = new Trie { Id = DefaultBrickPileBootstrapper.TrieId, RootNode = node }; session.Store(structureInfo); session.Store(page); session.SaveChanges(); var route = new DefaultRoute(new VirtualPathResolver(), new DefaultRouteResolver(trie), store, mapper); data = route.GetRouteData(context); } //Then Assert.NotNull(data); Assert.Equal("index", data.Values["action"]); Assert.Equal("FakeController", data.Values["controller"]); }
/// <summary> /// Moves to. /// </summary> /// <param name="to">To.</param> /// <param name="node">The node.</param> /// <exception cref="System.Exception">Cannot find parent node, maybe this is the root page?</exception> public void MoveTo(TrieNode to, TrieNode node) { var parent = this.RootNode.Flatten(x => x.Children).SingleOrDefault(x => x.Children.Contains(node)); if (parent == null) { throw new Exception("Cannot find parent node, maybe this is the root page?"); } parent.Children.Remove(node); to.Children.Add(node); node.ParentId = to.PageId; this.UpdateUrls(to); }
/// <summary> /// Updates the urls. /// </summary> /// <param name="node">The node.</param> private void UpdateUrls(TrieNode node) { foreach (var child in node.Children) { var slug = child.Url != null ? child.Url.Split('/').Last() : ""; if (!string.IsNullOrEmpty(child.ParentId)) { if (child.ParentId == this.RootNode.PageId) { child.Url = slug; } else { var parent = this.Get(child.ParentId); child.Url = slug.Insert(0, VirtualPathUtility.AppendTrailingSlash(parent.Url)); } } this.UpdateUrls(child); } }
public void Returns_Null_If_Request_Is_For_Static_Content(string path) { // Given var store = NewDocumentStore(); var mapper = A.Fake<IControllerMapper>(); var context = A.Fake<HttpContextBase>(); var trie = A.Fake<IRouteResolverTrie>(); A.CallTo(() => context.Request.Path).Returns(path); A.CallTo(() => mapper.GetControllerName(typeof(FakeController))).Returns("FakeController"); A.CallTo(() => mapper.ControllerHasAction("FakeController", "index")).Returns(false); // When RouteData data; using (var session = store.OpenSession()) { var page = new FakePage(); session.Store(page); var node = new TrieNode { PageId = page.Id }; session.Store(new Trie { Id = DefaultBrickPileBootstrapper.TrieId, RootNode = node }); session.SaveChanges(); var route = new DefaultRoute(new VirtualPathResolver(), new DefaultRouteResolver(trie), store, mapper); data = route.GetRouteData(context); } // Then Assert.Null(data); }
/// <summary> /// Initializes a new instance of the <see cref="ResolveResult" /> class. /// </summary> /// <param name="trieNode">The trie node.</param> /// <param name="action">The action.</param> public ResolveResult(TrieNode trieNode, string action) { this.TrieNode = trieNode; this.Action = action; }