public void Get_descendants()
        {
            // Arrange
            var root = FakePage
                       .Create("Root");

            var start = FakePage
                        .Create("Start")
                        .ChildOf(root);

            FakePage
            .Create("About us")
            .ChildOf(start);

            _fake.AddToRepository(root);

            // An instance of IContentRepository that you can use for Dependency Injection
            var repository = _fake.ContentRepository;

            // Or, an instance of IContentLoader that you can use for Dependency Injection
            var loader = _fake.ContentLoader;

            // Act
            var descendants_from_repo   = repository.GetDescendents(root.Content.ContentLink);
            var descendants_from_loader = loader.GetDescendents(root.Content.ContentLink);

            //Assert
            Assert.That(descendants_from_repo.Count(), Is.EqualTo(2));
            Assert.That(descendants_from_loader.Count(), Is.EqualTo(2));
        }
        public void Get_pages_of_certain_pagedata_type()
        {
            // Arrange
            var root = FakePage
                       .Create("root");

            FakePage
            .Create("AboutUs")
            .ChildOf(root);

            FakePage
            .Create <CustomPageData>("OtherPage")
            .ChildOf(root);

            FakePage
            .Create("Contact")
            .ChildOf(root);

            _fake.AddToRepository(root);

            // An instance of IContentRepository that you can use for Dependency Injection
            var repository = _fake.ContentRepository;

            // Or, an instance of IContentLoader that you can use for Dependency Injection
            var loader = _fake.ContentLoader;

            // Act
            var pages_from_repo   = GetDescendantsOf <CustomPageData>(root.Content.ContentLink, repository);
            var pages_from_loader = GetDescendantsOf <CustomPageData>(root.Content.ContentLink, loader);

            // Assert
            Assert.That(pages_from_repo.Count(), Is.EqualTo(1));
            Assert.That(pages_from_loader.Count(), Is.EqualTo(1));
        }
        public void Get_children_as_explicit_page_type()
        {
            // Arrange
            var root = FakePage
                       .Create("Root");

            var start = FakePage
                        .Create("Start")
                        .ChildOf(root).AsStartPage();

            var aboutUs = FakePage
                          .Create <CustomPageData>("About us")
                          .ChildOf(start);

            _fake.AddToRepository(root);

            var customPageDataList = new List <CustomPageData> {
                aboutUs.To <CustomPageData>()
            };

            // Custom mocking that is not handled by FakeMaker
            _fake.GetMockForFakeContentRepository()
            .Setup(repo => repo.GetChildren <CustomPageData>(ContentReference.StartPage))
            .Returns(customPageDataList);

            // Act
            var children = _fake.ContentRepository.GetChildren <CustomPageData>(ContentReference.StartPage);

            // Assert
            Assert.That(children.Count(), Is.EqualTo(1));
        }
        public void Get_descendants_from_with_children()
        {
            // Arrange
            var root =
                FakePage.Create("root")
                .WithChildren(
                    new List <FakePage>
            {
                FakePage.Create("AboutUs"),
                FakePage.Create("News").WithChildren(new List <FakePage>
                {
                    FakePage.Create("News item 1"),
                    FakePage.Create("News item 2")
                }),
                FakePage.Create("Contact")
            });


            _fake.AddToRepository(root);

            // An instance of IContentRepository that you can use for Dependency Injection
            var repository = _fake.ContentRepository;

            // Or, an instance of IContentLoader that you can use for Dependency Injection
            var loader = _fake.ContentLoader;

            // Act
            var pages_from_repo   = repository.GetDescendents(root.Content.ContentLink);
            var pages_from_loader = loader.GetDescendents(root.Content.ContentLink);

            // Assert
            Assert.That(pages_from_repo.Count(), Is.EqualTo(5));
            Assert.That(pages_from_loader.Count(), Is.EqualTo(5));
        }
Example #5
0
            public void Slug_Should_Be_Normalized(string name)
            {
                // Given                

                var page = new FakePage
                {
                    Metadata =
                    {
                        Name = name
                    }
                };

                // When

                var result = Slug.CreateSlug(page);

                //Then

                Assert.NotNull(result);
                Assert.DoesNotContain(" ", result);
                Assert.DoesNotContain("--", result);
                Assert.DoesNotContain("å", result);
                Assert.DoesNotContain("ä", result);
                Assert.DoesNotContain("ö", result);
                Assert.DoesNotContain("/", result);
            }
        public void Get_descendants_by_using_ServiceLocator()
        {
            // Arrange
            var root = FakePage
                       .Create("Root");

            var start = FakePage
                        .Create("Start")
                        .ChildOf(root);

            FakePage
            .Create("About us")
            .ChildOf(start);

            _fake.AddToRepository(root);

            var repository = ServiceLocator.Current.GetInstance <IContentRepository>();
            var loader     = ServiceLocator.Current.GetInstance <IContentLoader>();

            // Act
            var descendants_from_repo   = repository.GetDescendents(root.Content.ContentLink);
            var descendants_from_loader = loader.GetDescendents(root.Content.ContentLink);

            //Assert
            Assert.That(descendants_from_repo.Count(), Is.EqualTo(2));
            Assert.That(descendants_from_loader.Count(), Is.EqualTo(2));
        }
        public void Get_children()
        {
            // Arrange
            var root = FakePage.Create("root");

            FakePage
            .Create("AboutUs")
            .ChildOf(root);

            FakePage
            .Create("OtherPage")
            .ChildOf(root);

            FakePage
            .Create("Contact")
            .ChildOf(root);

            _fake.AddToRepository(root);

            // An instance of IContentRepository that you can use for Dependency Injection
            var repository = _fake.ContentRepository;

            // Or, an instance of IContentLoader that you can use for Dependency Injection
            var loader = _fake.ContentLoader;

            // Act
            var pages_from_repo   = repository.GetChildren <IContent>(root.Content.ContentLink);
            var pages_from_loader = loader.GetChildren <IContent>(root.Content.ContentLink);

            // Assert
            Assert.That(pages_from_repo.Count(), Is.EqualTo(3));
            Assert.That(pages_from_loader.Count(), Is.EqualTo(3));
        }
Example #8
0
 public static IEnumerable <FakePage> RandomPages(int count)
 {
     for (var i = 0; i < count; i++)
     {
         yield return(FakePage.Create(Guid.NewGuid().ToString()));
     }
 }
Example #9
0
        public void it_returns_different_singleton_for_different_parent_pages()
        {
            SetupFakes();
            var fakeRoot   = FakePage.Create("Root");
            var firstStart = FakePage.Create("Start")
                             .ChildOf(fakeRoot)
                             .WithChildren(Fixture.RandomPages(10));
            var firstSingleton = FakePage.Create <TestPage>("First test page")
                                 .ChildOf(firstStart);
            var secondStart = FakePage.Create("Second start")
                              .ChildOf(firstStart)
                              .WithChildren(Fixture.RandomPages(10));
            var secondSingleton = FakePage.Create <TestPage>("Second test page")
                                  .ChildOf(secondStart);

            _fake.AddToRepository(fakeRoot);

            var firstActual  = firstStart.Page.PageLink.GetSingletonPage <TestPage>();
            var secondActual = secondStart.Page.PageLink.GetSingletonPage <TestPage>();

            Assert.NotNull(firstActual);
            Assert.NotNull(secondActual);
            Assert.NotEqual(firstActual.ContentLink, secondActual.ContentLink);
            Assert.Equal(firstSingleton.Page.ContentLink, firstActual.ContentLink);
            Assert.Equal(secondSingleton.Page.ContentLink, secondActual.ContentLink);
        }
Example #10
0
        public void Can_Query_Page_Using_AllPages_Index()
        {
            // Arrange
            IPage data;

            using (var store = NewDocumentStore())
            {

                IndexCreation.CreateIndexes(typeof (DefaultBrickPileBootstrapper).Assembly, store);

                // Act
                using (var session = store.OpenSession())
                {

                    var pageModel = new FakePage
                    {
                        Id = "fakepages/1",
                        Parent = null,
                        Metadata = {Name = "Foo"}
                    };
                    session.Store(pageModel);
                    session.SaveChanges();

                }
                using (var session = store.OpenSession())
                {
                    data = session.Query<IPage, AllPages>()
                        .Customize(x => x.WaitForNonStaleResults())
                        .SingleOrDefault(x => x.Metadata.Name == "Foo");
                }

                // Assert
                Assert.NotNull(data);
            }
        }
Example #11
0
            public void Slug_Should_Be_Normalized(string name)
            {
                // Given

                var page = new FakePage
                {
                    Metadata =
                    {
                        Name = name
                    }
                };

                // When

                var result = Slug.CreateSlug(page);

                //Then

                Assert.NotNull(result);
                Assert.DoesNotContain(" ", result);
                Assert.DoesNotContain("--", result);
                Assert.DoesNotContain("å", result);
                Assert.DoesNotContain("ä", result);
                Assert.DoesNotContain("ö", result);
                Assert.DoesNotContain("/", result);
            }
Example #12
0
            public void Can_Resolve_Virtual_Path_For_Page_With_Query_Parameter()
            {
                // Given

                var store   = A.Fake <IDocumentStore>();
                var mapper  = A.Fake <IControllerMapper>();
                var context = A.Fake <HttpContextBase>();
                var trie    = A.Fake <IRouteResolverTrie>();

                var currentPage = new FakePage
                {
                    Metadata =
                    {
                        Url = "fake-page"
                    }
                };

                context.Request.RequestContext.RouteData.Values[DefaultRoute.CurrentPageKey] = currentPage;

                // When

                var             route = new DefaultRoute(new VirtualPathResolver(), new DefaultRouteResolver(trie), store, mapper);
                VirtualPathData data  = route.GetVirtualPath(context.Request.RequestContext, new RouteValueDictionary(new { currentPage, page = "1", mode = "edit" }));

                // Then

                Assert.NotNull(data);
                Assert.Equal("fake-page/?page=1&mode=edit", data.VirtualPath);
            }
Example #13
0
        public void Can_Query_Page_Using_AllPages_Index()
        {
            // Arrange
            IPage data;
            var   store = NewDocumentStore();

            IndexCreation.CreateIndexes(typeof(DefaultBrickPileBootstrapper).Assembly, store);

            // Act
            using (var session = store.OpenSession())
            {
                var pageModel = new FakePage
                {
                    Id       = "fakepages/1",
                    Parent   = null,
                    Metadata = { Name = "Foo" }
                };
                session.Store(pageModel);
                session.SaveChanges();
            }
            using (var session = store.OpenSession())
            {
                data = session.Query <IPage, AllPages>()
                       .Customize(x => x.WaitForNonStaleResults())
                       .SingleOrDefault(x => x.Metadata.Name == "Foo");
            }

            // Assert
            Assert.NotNull(data);
        }
        public void Setup()
        {
            _fake = new FakeMaker();

            // Arrange: create a page tree
            _root = FakePage.Create("root");

            _start = FakePage
                     .Create("Start")
                     .ChildOf(_root)
                     .AsStartPage();

            FakePage
            .Create("AboutUs")
            .ChildOf(_root);

            FakePage
            .Create <CustomPageData>("OtherPage")
            .ChildOf(_root)
            .HiddenFromMenu();

            FakePage
            .Create("Contact")
            .ChildOf(_root);

            FakePage
            .Create("Our sub page")
            .ChildOf(_start);

            // Arrange: add the entire page tree to the episerver repository.
            _fake.AddToRepository(_root);
        }
        public void Get_children_as_base_content_interface_type()
        {
            // Arrange
            var root = FakePage
                       .Create("Root");

            var start = FakePage
                        .Create("Start")
                        .ChildOf(root).AsStartPage();

            var aboutUs = FakePage
                          .Create("About us")
                          .ChildOf(start);

            _fake.AddToRepository(root);

            // An instance of IContentRepository that you can use for Dependency Injection
            var repository = _fake.ContentRepository;

            // Or, an instance of IContentLoader that you can use for Dependency Injection
            var loader = _fake.ContentLoader;

            // Act
            var children_from_repo   = repository.GetChildren <IContentData>(ContentReference.StartPage);
            var children_from_loader = loader.GetChildren <IContentData>(ContentReference.StartPage);

            // Assert
            Assert.That(children_from_repo.Count(), Is.EqualTo(1));
            Assert.That(children_from_loader.Count(), Is.EqualTo(1));
        }
Example #16
0
            public void Can_Create_Root_Page_As_Draft()
            {
                // Given
                IPage draft;
                Trie  structureInfo;

                var store = SetupContext();

                // When

                using (var session = store.OpenSession())
                {
                    draft = new FakePage {
                        Metadata = { Name = "Draft" }
                    };
                    session.Store(draft, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    draft         = session.Load <IPage>("FakePages/1/draft");
                    structureInfo = session.Load <Trie>(DefaultBrickPileBootstrapper.TrieId);
                }

                // Then

                Assert.NotNull(draft);
                Assert.NotNull(structureInfo.RootNode);
                Assert.Null(structureInfo.RootNode.PageId);
                Assert.Null(structureInfo.RootNode.Url);
            }
Example #17
0
        public void ExampleOfPseudWebDriver()
        {
            var fakePage = new FakePage(_context);

            fakePage.GetSomeDataFromConfig();
            fakePage.GetSomeObjectFromConfig();
        }
Example #18
0
            public void Can_Alter_Child_Page_And_Save_As_Draft()
            {
                // Given

                Trie  structureInfo;
                IPage page;

                var store = SetupContext();

                // When

                using (var session = store.OpenSession())
                {
                    session.Store(new FakePage {
                        Id = "FakePages/1", Metadata = { Name = "Start" }
                    }, StoreAction.Publish);
                    IPage p = new FakePage
                    {
                        Id       = "FakePages/2",
                        Parent   = new PageReference("FakePages/1"),
                        Metadata =
                        {
                            Name = "Child page"
                        }
                    };
                    session.Store(p, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    page = session.Load <FakePage>("FakePages/2");
                    page.Metadata.Name = "Page name changed";
                    session.Store(page, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    structureInfo = session.Load <Trie>(DefaultBrickPileBootstrapper.TrieId);
                    page          = session.Load <FakePage>("FakePages/2/draft");
                }

                // Then

                Assert.NotNull(structureInfo.RootNode);
                Assert.Equal("FakePages/1", structureInfo.RootNode.PageId);
                Assert.Null(structureInfo.RootNode.ParentId);
                Assert.Null(structureInfo.RootNode.Url);
                Assert.Equal(1, structureInfo.RootNode.Children.Count);
                Assert.Equal("FakePages/2", structureInfo.RootNode.Children.First().PageId);
                Assert.Equal("FakePages/1", structureInfo.RootNode.Children.First().ParentId);
                Assert.Equal("child-page", structureInfo.RootNode.Children.First().Url);
                Assert.Equal(page.Metadata.Url, structureInfo.RootNode.Children.First().Url);
                Assert.Equal("child-page", page.Metadata.Slug);
                Assert.False(page.Metadata.IsPublished);
            }
Example #19
0
            public void Can_Publish_Then_Unpublish_And_Republish_Child_Page_With_Children()
            {
                // Given

                Trie structureInfo;

                var store = SetupContext();

                IPage start, child;

                // When

                using (var session = store.OpenSession()) {
                    start = new FakePage {
                        Metadata = { Name = "Start" }
                    };
                    session.Store(start, StoreAction.Publish);
                    child = new FakePage {
                        Parent = new PageReference(start.Id), Metadata = { Name = "Child" }
                    };
                    session.Store(child, StoreAction.Publish);
                    session.Store(new FakePage {
                        Parent = new PageReference(child.Id), Metadata = { Name = "Child2" }
                    }, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    child = session.Load <FakePage>("FakePages/2");
                    session.Store(child, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    child = session.Load <FakePage>("FakePages/2/Draft");
                    child.Metadata.Name = "Do it";
                    session.Store(child, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    structureInfo = session.Load <Trie>(DefaultBrickPileBootstrapper.TrieId);
                    child         = session.Load <FakePage>("FakePages/2/Draft");
                }

                // Then

                Assert.NotEmpty(structureInfo.RootNode.Children);
                Assert.NotNull(child);
                //Assert.NotEmpty(structureInfo.RootNode.Children.Single(x => x.DraftId == "FakePages/2/draft").Children);
                //Assert.NotNull(structureInfo.RootNode.Children.Single(x => x.DraftId == "FakePages/2/draft").ParentId);
            }
        public void Get_ancestors()
        {
            var child = FakePage
                        .Create("Child page")
                        .ChildOf(_start);
            var repository = _fake.ContentRepository;

            // Act
            var ancestors = repository.GetAncestors(child.Content.ContentLink);

            Assert.That(ancestors.Count(), Is.EqualTo(2));
        }
Example #21
0
            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);
                }
            }
Example #22
0
        public void it_returns_null_when_page_not_found()
        {
            var fakeRoot  = FakePage.Create("Root");
            var fakeStart = FakePage.Create("Start")
                            .ChildOf(fakeRoot)
                            .WithChildren(Fixture.RandomPages(10));

            _fake.AddToRepository(fakeRoot);

            var actual = fakeStart.Page.GetSingletonPage <TestPage>();

            Assert.Null(actual);
        }
            public void Can_Resolve_Virtual_Path()
            {
                // Given
                var page = new FakePage {Metadata = { Url = "foo/bar/fudge"}};
                var resolver = new VirtualPathResolver();

                // When

                var result = resolver.Resolve(page, new RouteValueDictionary( new { action = "index" } ));

                // Then

                Assert.Equal("foo/bar/fudge/", result);
            }
            public void Can_Append_Action_To_Url()
            {
                // Given
                var page = new FakePage { Metadata = { Url = "foo/bar/fudge" } };
                var resolver = new VirtualPathResolver();

                // When

                var result = resolver.Resolve(page, new RouteValueDictionary(new { action = "comment" }));

                // Then

                Assert.Equal("foo/bar/fudge/comment/", result);
            }
Example #25
0
        public void it_does_not_add_empty_content_link_to_the_cache()
        {
            var fakeRoot  = FakePage.Create("Root");
            var fakeStart = FakePage.Create("Start")
                            .ChildOf(fakeRoot);

            _fake.AddToRepository(fakeRoot);

            fakeStart.Page.PageLink.GetSingletonPage <TestPage>();

            var key    = new CacheKey(typeof(TestPage), fakeStart.Page.PageLink);
            var actual = _fakeCache.InternalCache.ContainsKey(key);

            Assert.False(actual);
        }
        public void Can_Resolve_Virtual_Path_With_Default_Action() {

            // Arrange
            IPage model = new FakePage { Metadata = { Url = "page1/page2" } };
            var routeValueDictionary = new RouteValueDictionary();

            // Act

            var virtualPathResolver = new VirtualPathResolver();
            var virtualPath = virtualPathResolver.Resolve(model, routeValueDictionary);

            // Assert

            Assert.AreEqual("page1/page2/", virtualPath);
        }
Example #27
0
            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);
                }
            }
Example #28
0
            public void Can_Resolve_Virtual_Path()
            {
                // Given
                var page = new FakePage {
                    Metadata = { Url = "foo/bar/fudge" }
                };
                var resolver = new VirtualPathResolver();

                // When

                var result = resolver.Resolve(page, new RouteValueDictionary(new { action = "index" }));

                // Then

                Assert.Equal("foo/bar/fudge/", result);
            }
Example #29
0
            public void Can_Append_Action_To_Url()
            {
                // Given
                var page = new FakePage {
                    Metadata = { Url = "foo/bar/fudge" }
                };
                var resolver = new VirtualPathResolver();

                // When

                var result = resolver.Resolve(page, new RouteValueDictionary(new { action = "comment" }));

                // Then

                Assert.Equal("foo/bar/fudge/comment/", result);
            }
Example #30
0
            public void Can_Resolve_Home_Page_With_Default_Action(string path)
            {
                // Given

                var mapper  = A.Fake <IControllerMapper>();
                var context = A.Fake <HttpContextBase>();
                var trie    = A.Fake <IRouteResolverTrie>();
                var theTrie = new Trie
                {
                    Id       = DefaultBrickPileBootstrapper.TrieId,
                    RootNode = new TrieNode
                    {
                        PageId = "pages/1",
                        Url    = "page"
                    }
                };

                A.CallTo(() => context.Request.Path).Returns(path);
                A.CallTo(() => mapper.GetControllerName(typeof(FakeController))).Returns("FakeController");
                A.CallTo(() => mapper.ControllerHasAction("FakeController", "index")).Returns(true);
                A.CallTo(() => trie.LoadTrie()).Returns(theTrie);

                // When

                RouteData data;

                using (var store = NewDocumentStore()) {
                    using (var session = store.OpenSession())
                    {
                        var page = new FakePage {
                            Id = "pages/1"
                        };

                        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"]);
            }
Example #31
0
            public void Can_Save_Page_Draft()
            {
                // Given
                IPage fakePage;
                IPage draft;
                var   container = A.Fake <IContainer>();
                var   store     = this.SetupContext();

                // When

                using (var session = store.OpenSession())
                {
                    fakePage = new FakePage
                    {
                        Id       = "fakepages/1",
                        Metadata =
                        {
                            Name = "Published version"
                        }
                    };
                    session.Store(fakePage, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    draft = session.Load <IPage>("fakepages/1");
                    draft.Metadata.Name = "Page draft";
                    session.Store(draft, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    fakePage = session.Load <IPage>("fakepages/1");
                    draft    = session.Load <IPage>("fakepages/1/draft");
                }

                // Then

                Assert.NotNull(fakePage);
                Assert.Equal("fakepages/1", fakePage.Id);
                Assert.Equal("Published version", fakePage.Metadata.Name);
                Assert.NotNull(draft);
                Assert.Equal("fakepages/1/draft", draft.Id);
                Assert.Equal("Page draft", draft.Metadata.Name);
            }
Example #32
0
            public void Can_Save_Second_Level_Child_With_Draft_As_Parent()
            {
                // Given

                Trie structureInfo;

                var store = SetupContext();

                IPage child;

                // When

                using (var session = store.OpenSession())
                {
                    session.Store(new  FakePage(), StoreAction.Publish);

                    child = new FakePage
                    {
                        Parent   = new PageReference("FakePages/1"),
                        Metadata = { Name = "Child" }
                    };
                    session.Store(child, StoreAction.Save);

                    session.Store(new FakePage
                    {
                        Parent   = new PageReference(child.Id),
                        Metadata = { Name = "Child2" }
                    }, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession()) {
                    child = session.Load <IPage>("FakePages/2");
                    child.Metadata.Name = "Changed name";
                    session.Store(child, StoreAction.Publish);
                    session.SaveChanges();

                    structureInfo = session.Load <Trie>(DefaultBrickPileBootstrapper.TrieId);
                }

                // Then

                Assert.NotNull(child);
                Assert.NotEmpty(structureInfo.RootNode.Children);
                Assert.NotEmpty(structureInfo.Get("FakePages/2").Children);
                //Assert.NotNull(structureInfo.GetNode("FakePages/3/draft").ParentId);
            }
Example #33
0
            public void Can_Publish_Second_Level_Child_With_Draft_As_Child()
            {
                // Given

                var store = SetupContext();

                IPage start, child;

                // When

                using (var session = store.OpenSession())
                {
                    start = new FakePage {
                        Metadata = { Name = "Start" }
                    };
                    session.Store(start, StoreAction.Publish);

                    child = new FakePage {
                        Parent = new PageReference(start.Id), Metadata = { Name = "Child" }
                    };
                    session.Store(child, StoreAction.Save);

                    session.Store(new FakePage {
                        Parent = new PageReference(child.Id), Metadata = { Name = "Child2" }
                    }, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    child = session.Load <IPage>("FakePages/2");
                    child.Metadata.Name = "Changed name";
                    session.Store(child, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    child = session.Load <IPage>("FakePages/3");
                }

                // Then

                Assert.Equal(child.Parent.Id, "FakePages/2");
                Assert.Equal(default(DateTime?), child.Metadata.Published);
            }
Example #34
0
            public void Can_Publish_Then_Unpublish_And_Republish_Root_Page_With_Children()
            {
                // Given

                Trie structureInfo;

                var store = SetupContext();

                IPage start;

                // When

                using (var session = store.OpenSession()) {
                    start = new FakePage {
                        Metadata = { Name = "Start" }
                    };
                    session.Store(start, StoreAction.Publish);
                    session.Store(new FakePage {
                        Parent = new PageReference(start.Id), Metadata = { Name = "Child" }
                    }, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    start = session.Load <FakePage>("FakePages/1");
                    session.Store(start, StoreAction.Save);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    start = session.Load <FakePage>("FakePages/1/draft");
                    session.Store(start, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    structureInfo = session.Load <Trie>(DefaultBrickPileBootstrapper.TrieId);
                }

                // Then

                Assert.NotEmpty(structureInfo.RootNode.Children);
            }
Example #35
0
        public void Can_Resolve_Virtual_Path_With_Default_Action()
        {
            // Arrange
            IPage model = new FakePage {
                Metadata = { Url = "page1/page2" }
            };
            var routeValueDictionary = new RouteValueDictionary();

            // Act

            var virtualPathResolver = new VirtualPathResolver();
            var virtualPath         = virtualPathResolver.Resolve(model, routeValueDictionary);

            // Assert

            Assert.AreEqual("page1/page2/", virtualPath);
        }
Example #36
0
        public void it_returns_singleton_page_by_parent_pages_link()
        {
            var fakeRoot  = FakePage.Create("Root");
            var fakeStart = FakePage.Create("Start")
                            .ChildOf(fakeRoot)
                            .WithChildren(Fixture.RandomPages(10));
            var fakeExpected = FakePage.Create <TestPage>("Test page")
                               .ChildOf(fakeStart);

            _fake.AddToRepository(fakeRoot);
            var expected = fakeExpected.Page;

            var actual = fakeStart.Page.PageLink.GetSingletonPage <TestPage>();

            Assert.NotNull(actual);
            Assert.Equal(expected.ContentLink, actual.ContentLink);
        }
Example #37
0
            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"]);
            }
Example #38
0
            public void Can_Publish_Second_Level_Child_With_Draft_As_Child()
            {
                // Given

                IPage start, child;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        start = new FakePage {Metadata = {Name = "Start"}};
                        session.Store(start, StoreAction.Publish);

                        child = new FakePage {Parent = new PageReference(start.Id), Metadata = {Name = "Child"}};
                        session.Store(child, StoreAction.Save);

                        session.Store(
                            new FakePage {Parent = new PageReference(child.Id), Metadata = {Name = "Child2"}},
                            StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        child = session.Load<IPage>("FakePages/2");
                        child.Metadata.Name = "Changed name";
                        session.Store(child, StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        child = session.Load<IPage>("FakePages/3");
                    }

                    // Then

                    Assert.Equal(child.Parent.Id, "FakePages/2");
                    Assert.Equal(default(DateTime?), child.Metadata.Published);
                }
            }
Example #39
0
            public void Can_Save_Child_Page_As_Draft()
            {
                // Given

                Trie structureInfo;
                IPage page;

                // When

                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        session.Store(new FakePage {Id = "FakePages/1", Metadata = {Name = "Start"}},
                            StoreAction.Publish);
                        IPage draft = new FakePage
                        {
                            Id = "FakePages/2",
                            Parent = new PageReference("FakePages/1"),
                            Metadata =
                            {
                                Name = "Child page"
                            }
                        };
                        session.Store(draft, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                        page = session.Load<FakePage>("FakePages/2");
                    }

                    // Then

                    Assert.NotNull(structureInfo.RootNode);
                    Assert.Equal("FakePages/1", structureInfo.RootNode.PageId);
                    Assert.Null(structureInfo.RootNode.ParentId);
                    Assert.Null(structureInfo.RootNode.Url);
                    Assert.Equal(1, structureInfo.RootNode.Children.Count);
                    Assert.Equal("FakePages/1", structureInfo.RootNode.Children.First().ParentId);
                    Assert.Equal("child-page", structureInfo.RootNode.Children.First().Url);
                    Assert.Equal(page.Metadata.Url, structureInfo.RootNode.Children.First().Url);
                    Assert.Equal("child-page", page.Metadata.Slug);
                }
            }
Example #40
0
            public void Can_Publish_Then_Unpublish_And_Republish_Root_Page_With_Children()
            {
                // Given

                Trie structureInfo;

                IPage start;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        start = new FakePage {Metadata = {Name = "Start"}};
                        session.Store(start, StoreAction.Publish);
                        session.Store(new FakePage {Parent = new PageReference(start.Id), Metadata = {Name = "Child"}},
                            StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        start = session.Load<FakePage>("FakePages/1");
                        session.Store(start, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        start = session.Load<FakePage>("FakePages/1/draft");
                        session.Store(start, StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                    }

                    // Then

                    Assert.NotEmpty(structureInfo.RootNode.Children);
                }
            }
Example #41
0
            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);
            }
Example #42
0
            public void Can_Resolve_Virtual_Path_For_Page_With_Query_Parameter()
            {
                // Given

                var store = A.Fake<IDocumentStore>();
                var mapper = A.Fake<IControllerMapper>();
                var context = A.Fake<HttpContextBase>();
                var trie = A.Fake<IRouteResolverTrie>();

                var currentPage = new FakePage
                {
                    Metadata =
                    {
                        Url = "fake-page"
                    }
                };
                context.Request.RequestContext.RouteData.Values[DefaultRoute.CurrentPageKey] = currentPage;

                // When

                var route = new DefaultRoute(new VirtualPathResolver(), new DefaultRouteResolver(trie), store, mapper);
                VirtualPathData data = route.GetVirtualPath(context.Request.RequestContext, new RouteValueDictionary(new { currentPage, page = "1", mode = "edit" }));

                // Then

                Assert.NotNull(data);
                Assert.Equal("fake-page/?page=1&mode=edit", data.VirtualPath);
            }
Example #43
0
            public void Can_Publish_Then_Unpublish_And_Republish_Child_Page_With_Children()
            {
                // Given

                Trie structureInfo;

                IPage start, child;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        start = new FakePage {Metadata = {Name = "Start"}};
                        session.Store(start, StoreAction.Publish);
                        child = new FakePage {Parent = new PageReference(start.Id), Metadata = {Name = "Child"}};
                        session.Store(child, StoreAction.Publish);
                        session.Store(
                            new FakePage {Parent = new PageReference(child.Id), Metadata = {Name = "Child2"}},
                            StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        child = session.Load<FakePage>("FakePages/2");
                        session.Store(child, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        child = session.Load<FakePage>("FakePages/2/Draft");
                        child.Metadata.Name = "Do it";
                        session.Store(child, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                        child = session.Load<FakePage>("FakePages/2/Draft");
                    }

                    // Then

                    Assert.NotEmpty(structureInfo.RootNode.Children);
                    Assert.NotNull(child);
                    //Assert.NotEmpty(structureInfo.RootNode.Children.Single(x => x.DraftId == "FakePages/2/draft").Children);
                    //Assert.NotNull(structureInfo.RootNode.Children.Single(x => x.DraftId == "FakePages/2/draft").ParentId);'}
                }
            }
Example #44
0
            public void Can_Publish_Root_Level_With_Draft_As_Child()
            {
                // Given

                var store = SetupContext();

                IPage start, child;

                // When

                using (var session = store.OpenSession())
                {
                    start = new FakePage { Metadata = { Name = "Start" } };

                    session.Store(start, StoreAction.Save);
                    session.SaveChanges();

                    child = new FakePage { Parent = new PageReference(start.Id), Metadata = { Name = "Child" } };
                    session.Store(child, StoreAction.Save);
                    session.SaveChanges();

                }

                using (var session = store.OpenSession())
                {
                    child = session.Load<IPage>("FakePages/1");
                    child.Metadata.Name = "Changed name";
                    session.Store(child, StoreAction.Publish);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {

                    child = session.Load<IPage>("FakePages/2");
                }

                // Then

                Assert.Equal(child.Parent.Id, "FakePages/1");
            }
Example #45
0
            public void Can_Save_Page_Without_A_Name()
            {
                using (var store = SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        var fakePage = new FakePage { Id = "fakepages/1" };
                        session.Store(fakePage, StoreAction.Publish);
                        session.Store(new FakePage { Id = "fakepages/2", Parent = fakePage }, StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession()) {
                        var fakePage = session.Load<FakePage>("fakepages/2");
                        Assert.Equal("fakepages-2", fakePage.Metadata.Slug);
                    }
                }
            }
Example #46
0
            public void Can_Save_Second_Level_Child_With_Draft_As_Parent()
            {
                // Given

                Trie structureInfo;

                IPage child;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        session.Store(new FakePage(), StoreAction.Publish);

                        child = new FakePage
                        {
                            Parent = new PageReference("FakePages/1"),
                            Metadata = {Name = "Child"}
                        };
                        session.Store(child, StoreAction.Save);

                        session.Store(new FakePage
                        {
                            Parent = new PageReference(child.Id),
                            Metadata = {Name = "Child2"}
                        }, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {

                        child = session.Load<IPage>("FakePages/2");
                        child.Metadata.Name = "Changed name";
                        session.Store(child, StoreAction.Publish);
                        session.SaveChanges();

                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                    }

                    // Then

                    Assert.NotNull(child);
                    Assert.NotEmpty(structureInfo.RootNode.Children);
                    Assert.NotEmpty(structureInfo.Get("FakePages/2").Children);
                    //Assert.NotNull(structureInfo.GetNode("FakePages/3/draft").ParentId);
                }
            }
Example #47
0
            public void Can_UnPublish_Page()
            {
                // Given
                IPage start, child;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        start = new FakePage {Metadata = {Name = "Start"}};

                        session.Store(start, StoreAction.Publish);
                        session.SaveChanges();

                    }

                    using (var session = store.OpenSession())
                    {
                        child = session.Load<IPage>("FakePages/1");
                        child.Metadata.Name = "changed";
                        session.Store(child, StoreAction.UnPublish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {

                        child = session.Load<IPage>("FakePages/1");
                    }

                    // Then

                    Assert.Equal(default(DateTime?), child.Metadata.Published);
                }
            }
Example #48
0
            public void Can_Alter_Child_Page_And_Publish()
            {
                // Given

                Trie structureInfo;
                IPage page, draft;

                // When

                using (var store = this.SetupContext())
                {

                    using (var session = store.OpenSession())
                    {
                        session.Store(new FakePage {Id = "FakePages/1", Metadata = {Name = "Start"}},
                            StoreAction.Publish);
                        IPage p = new FakePage
                        {
                            Id = "FakePages/2",
                            Parent = new PageReference("FakePages/1"),
                            Metadata =
                            {
                                Name = "Child page"
                            }
                        };
                        session.Store(p, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        page = session.Load<FakePage>("FakePages/2");
                        page.Metadata.Name = "Page name changed";
                        session.Store(page, StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                        draft = session.Load<FakePage>("FakePages/2/Draft");
                        page = session.Load<FakePage>("FakePages/2");
                    }

                    // Then

                    Assert.Null(draft);
                    Assert.NotNull(page);
                    Assert.Equal("FakePages/2", structureInfo.RootNode.Children.First().PageId);
                    Assert.Equal(1, structureInfo.RootNode.Children.Count);
                }
            }
Example #49
0
            public void Can_Create_Root_Page_As_Draft()
            {
                // Given
                IPage draft;
                Trie structureInfo;

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        draft = new FakePage {Metadata = {Name = "Draft"}};
                        session.Store(draft, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        draft = session.Load<IPage>("FakePages/1/draft");
                        structureInfo = session.Load<Trie>(DefaultBrickPileBootstrapper.TrieId);
                    }

                    // Then

                    Assert.NotNull(draft);
                    Assert.NotNull(structureInfo.RootNode);
                    Assert.Null(structureInfo.RootNode.PageId);
                    Assert.Null(structureInfo.RootNode.Url);
                }
            }
Example #50
0
            public void Can_Save_Page_Draft()
            {
                // Given
                IPage fakePage;
                IPage draft;
                var container = A.Fake<IContainer>();

                // When
                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        fakePage = new FakePage
                        {
                            Id = "fakepages/1",
                            Metadata =
                            {
                                Name = "Published version"
                            }
                        };
                        session.Store(fakePage, StoreAction.Publish);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        draft = session.Load<IPage>("fakepages/1");
                        draft.Metadata.Name = "Page draft";
                        session.Store(draft, StoreAction.Save);
                        session.SaveChanges();
                    }

                    using (var session = store.OpenSession())
                    {
                        fakePage = session.Load<IPage>("fakepages/1");
                        draft = session.Load<IPage>("fakepages/1/draft");
                    }

                    // Then

                    Assert.NotNull(fakePage);
                    Assert.Equal("fakepages/1", fakePage.Id);
                    Assert.Equal("Published version", fakePage.Metadata.Name);
                    Assert.NotNull(draft);
                    Assert.Equal("fakepages/1/draft", draft.Id);
                    Assert.Equal("Page draft", draft.Metadata.Name);
                }
            }