예제 #1
0
        public void ReadFileCanReadFileContents()
        {
            var fs = new MockGenFS();

            fs.CreateFile("test.txt", "hello, world");
            Assert.AreEqual("hello, world", fs.ReadFile("test.txt"));
        }
예제 #2
0
        public void BreadcrumbsForIndex()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html", "<!-- title:Home -->Home");
            fs.CreateFile("src/foo/index.html", "<!-- title:Child -->{{breadcrumbs}} Child");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<a href=\"../index.html\">Home</a> Child", fs.ReadFile("dist/foo/index.html"));
        }
예제 #3
0
        public void FileContentsAreCopiedToTheDestination()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/test.txt", "hello, world");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("hello, world", fs.ReadFile("dist/test.txt"));
        }
예제 #4
0
        public void RelativeRootAtBaseLevel()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/about.html", "<!-- template:_base -->about");
            fs.CreateFile("src/_base.html", "<!-- type:template -->{{relative-root}}assets/style.css {{content}}");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("./assets/style.css about", fs.ReadFile("dist/about.html"));
        }
예제 #5
0
        public void TemplateReadAfterContentShouldStillWork()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/content.html", "<!-- template:tem --> foobar.");
            fs.CreateFile("src/tem.html", "<!-- type:template --> <p>{{content}}</p>");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<p>foobar.</p>", fs.ReadFile("dist/content.html"));
        }
예제 #6
0
        public void ATemplateCanUseATitle()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/tem.html", "<!-- type:template -->\n<h1>{{title}}</h1><p>{{content}}</p>");
            fs.CreateFile("src/con.html", "<!-- template:tem title:\"Content Title\" -->Some content.");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<h1>Content Title</h1><p>Some content.</p>", fs.ReadFile("dist/con.html"));
        }
예제 #7
0
        public void AContentFileCanUseATemplateFile()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/tem.html", "<!-- type:template -->\n<b>{{content}}</b>");
            fs.CreateFile("src/con.html", "<!-- type:content template:tem --><em>Hello, world</em>");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<b><em>Hello, world</em></b>", fs.ReadFile("dist/con.html"));
        }
예제 #8
0
        public void TemplatesCanBeNested()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/outerTemplate.html", "<!-- type:template --> <h1>{{content}}</h1>");
            fs.CreateFile("src/innerTemplate.html", "<!-- type:template template:outerTemplate --><em>{{content}}</em>");
            fs.CreateFile("src/content.html", "<!-- template:innerTemplate -->Hello, world.");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<h1><em>Hello, world.</em></h1>", fs.ReadFile("dist/content.html"));
        }
예제 #9
0
        public void AFileCanUseRelativeRootPaths()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html", "index");
            fs.CreateFile("src/tem.html", "<!-- type:template -->\n<p>{{relative-root}}</p><p>{{content}}</p>");
            fs.CreateFile("src/sub/index.html", "index");
            fs.CreateFile("src/sub/con.html", "<!-- type:content template:tem --><em>Hello, world</em>");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual("<p>../</p><p><em>Hello, world</em></p>", fs.ReadFile("dist/sub/con.html"));
        }
예제 #10
0
        public void CanCreateABreadcrumbMenu()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html", "<!-- title: Home -->");
            fs.CreateFile("src/one/index.html", "<!-- title: One -->");
            fs.CreateFile("src/one/two/index.html", "<!-- title: Two -->");
            fs.CreateFile("src/one/two/content.html", "{{breadcrumbs}}");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual(
                "<a href=\"../../index.html\">Home</a> <span>></span> <a href=\"../index.html\">One</a> <span>></span> <a href=\"./index.html\">Two</a>",
                fs.ReadFile("dist/one/two/content.html"));
        }
예제 #11
0
        public void MoreComplexNestedTemplatesWork()
        {
            var fs = new MockGenFS();

            fs.CreateDirectory("src");
            fs.CreateFile("src/index.html");
            fs.CreateFile("src/_base.html", "<!-- type:template --><h1>_Base</h1>{{content}}");
            fs.CreateFile("src/_page.html", "<!-- type:template template:_base --><h2>_Page</h2>{{content}}");
            fs.CreateFile("src/sicp/week-1.html", "<!-- template:_page --><p>Actual content</p>");

            var gen = new Generator(fs, "src", "dist");

            Assert.AreEqual(
                "<h1>_Base</h1><h2>_Page</h2><p>Actual content</p>",
                fs.ReadFile("dist/sicp/week-1.html"));
        }