Esempio n. 1
0
        public async Task ComposeSite_LayoutNested()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "L1 _C_"),
                new FileMock(Location.FromPath(@"_layouts\\l2.md"), "---\r\nlayout: l1\r\n---\r\nL2 _C_"),
                new FileMock(Location.FromPath(@"_layouts\\l4.md"), "---\r\nlayout: l3\r\n---\r\nL4 _C_"),
                new FileMock(Location.FromPath(@"_layouts\\l3.md"), "L3 _C_"),
                new FileMock(Location.FromPath(@"index.md"),
                             "---\r\nprp1: A\r\n---\r\nText Line1\r\nText Line2"),
                new FileMock(Location.FromPath(@"p2.md"), "---\r\nlayout: l2\r\n---\r\nP1"),
                new FileMock(Location.FromPath(@"p4.md"), "---\r\nlayout: l4\r\n---\r\nP4")
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual("Text Line1\r\nText Line2", site.MainPage.RawContent);
            Assert.IsNull(site.MainPage.Layout);
            Assert.IsNotNull(site.MainPage.SubPages[0].Layout);
            Assert.AreEqual("l2", site.MainPage.SubPages.Find(p => p.Name == "p2").Layout.Name);
            Assert.AreEqual("l4", site.MainPage.SubPages.Find(p => p.Name == "p4").Layout.Name);
            Assert.IsNotNull(site.MainPage.SubPages.Find(p => p.Name == "p2").Layout.Layout);
            Assert.AreEqual("l1", site.MainPage.SubPages.Find(p => p.Name == "p2").Layout.Layout.Name);
            Assert.IsNotNull(site.MainPage.SubPages.Find(p => p.Name == "p4").Layout.Layout);
            Assert.AreEqual("l3", site.MainPage.SubPages.Find(p => p.Name == "p4").Layout.Layout.Name);
        }
Esempio n. 2
0
        public void ComposeSite_InheritLayoutMissing()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"index.md"), ""),
                new FileMock(Location.FromPath(@"page1\\index.md"), "---\r\nlayout: $\r\n---")
            }.ToAsyncEnumerable();

            Assert.ThrowsAsync <MissingInheritLayoutException>(() => composer.ComposeSite(src, "", ""));
        }
Esempio n. 3
0
        public void ComposeSite_DuplicateLayout()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "_C_"),
                new FileMock(Location.FromPath(@"_layouts\\l1.txt"), "_C_"),
                new FileMock(Location.FromPath(@"index.md"), ""),
            }.ToAsyncEnumerable();

            Assert.ThrowsAsync <DuplicateTemplateException>(() => composer.ComposeSite(src, "", ""));
        }
Esempio n. 4
0
        public void ComposeSite_LayoutMissing()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "Layout _C_"),
                new FileMock(Location.FromPath(@"index.md"),
                             "---\r\nprp1: A\r\nlayout: l2\r\n---\r\nText Line1\r\nText Line2"),
            }.ToAsyncEnumerable();

            Assert.ThrowsAsync <MissingLayoutException>(() => composer.ComposeSite(src, "", ""));
        }
Esempio n. 5
0
        public async Task ComposeSite_InheritLayoutPhantomPage()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "Layout _C_"),
                new FileMock(Location.FromPath(@"index.md"), "---\r\nlayout: l1\r\n---"),
                new FileMock(Location.FromPath(@"page1\\page2\\index.md"), "---\r\nlayout: $\r\n---"),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual("l1", site.MainPage.SubPages.First(p => p.Name == "page1").SubPages.First(p => p.Name == "page2").Layout.Name);
        }
Esempio n. 6
0
        public async Task ComposeSite_SubFolderLayout()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\dir1\\l1.md"), "_C_"),
                new FileMock(Location.FromPath(@"index.md"), ""),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual(1, site.Layouts.Count);
            Assert.AreEqual("dir1::l1", site.Layouts[0].Name);
            Assert.AreEqual("_C_", site.Layouts[0].RawContent);
        }
Esempio n. 7
0
        public void ComposeSite_MissingContentPlaceholderLayout()
        {
            var layoutMock = new Mock <ILayoutParser>();

            layoutMock.Setup(m => m.ValidateLayout(It.IsAny <string>()))
            .Callback <string>(c => throw new Exception());

            var composer = new BaseSiteComposer(layoutMock.Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "abc"),
                new FileMock(Location.FromPath(@"index.md"), ""),
            }.ToAsyncEnumerable();

            Assert.ThrowsAsync <InvalidLayoutException>(() => composer.ComposeSite(src, "", ""));
        }
Esempio n. 8
0
        public async Task ComposeSite_LayoutMetadata()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "---\r\nprp1: B\r\nprp2: C\r\n---\r\nLayout _C_"),
                new FileMock(Location.FromPath("index.md"),
                             "---\r\nprp1: A\r\nlayout: l1\r\n---\r\nText Line1\r\nText Line2"),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual(2, site.MainPage.Data.Count);
            Assert.AreEqual("A", site.MainPage.Data["prp1"]);
            Assert.AreEqual("C", site.MainPage.Data["prp2"]);
        }
Esempio n. 9
0
        public async Task ComposeSite_LayoutSimple()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "Layout _C_"),
                new FileMock(Location.FromPath(@"index.md"),
                             "---\r\nprp1: A\r\nlayout: l1\r\n---\r\nText Line1\r\nText Line2"),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual("Text Line1\r\nText Line2", site.MainPage.RawContent);
            Assert.AreEqual(1, site.MainPage.Data.Count);
            Assert.AreEqual("A", site.MainPage.Data["prp1"]);
            Assert.IsNotNull(site.MainPage.Layout);
            Assert.AreEqual("l1", site.MainPage.Layout.Name);
            Assert.AreEqual("Layout _C_", site.MainPage.Layout.RawContent);
        }
Esempio n. 10
0
        public async Task ComposeSite_LayoutInheritedMetadataTest()
        {
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), "---\r\nprp1: A\r\nprp2: B\r\n---\r\n"),
                new FileMock(Location.FromPath(@"_layouts\\l2.md"), "---\r\nlayout: l1\r\nprp1: A1\r\nprp3: C\r\n---\r\n"),
                new FileMock(Location.FromPath("index.md"), ""),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            var layout = site.Layouts.First(l => l.Name == "l2");

            Assert.AreEqual(3, layout.Data.Count);
            Assert.AreEqual("A1", layout.Data["prp1"]);
            Assert.AreEqual("B", layout.Data["prp2"]);
            Assert.AreEqual("C", layout.Data["prp3"]);
        }
Esempio n. 11
0
        public async Task ComposeSiteDefaultLayout()
        {
            var conf = new Configuration()
            {
                { "default-layout", "l1" }
            };
            var composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, conf, new Mock <IComposerExtension>().Object);

            var src = new FileMock[]
            {
                new FileMock(Location.FromPath(@"_layouts\\l1.md"), ""),
                new FileMock(Location.FromPath(@"_layouts\\l2.md"), ""),
                new FileMock(Location.FromPath(@"index.md"), ""),
                new FileMock(Location.FromPath(@"page1\\index.md"), ""),
                new FileMock(Location.FromPath(@"page2\\index.md"), "---\r\nlayout: l2\r\n---"),
            }.ToAsyncEnumerable();

            var site = await composer.ComposeSite(src, "", "");

            Assert.AreEqual("l1", site.MainPage.Layout.Name);
            Assert.AreEqual("l1", site.MainPage.SubPages.First(p => p.Name == "page1").Layout.Name);
            Assert.AreEqual("l2", site.MainPage.SubPages.First(p => p.Name == "page2").Layout.Name);
        }
Esempio n. 12
0
 public void Setup()
 {
     m_Composer = new BaseSiteComposer(new Mock <ILayoutParser>().Object, null, new Mock <IComposerExtension>().Object);
 }