package site import ( "os" "path/filepath" "strings" "testing" "github.com/facundoolano/jorge/config" ) func TestLoadAndRenderTemplates(t *testing.T) { config := newProject() defer os.RemoveAll(config.RootDir) // add two layouts content := `--- ---
Hello world!
` file = newFile(config.SrcDir, "hello.html", content) helloPath := file.Name() defer os.Remove(helloPath) content = `--- layout: post title: goodbye! subtitle: my last post date: 2024-02-01 ---goodbye world!
` file = newFile(config.SrcDir, "goodbye.html", content) goodbyePath := file.Name() defer os.Remove(goodbyePath) // add a page (no date) content = `--- layout: base title: about ---about this site
` file = newFile(config.SrcDir, "about.html", content) aboutPath := file.Name() defer os.Remove(aboutPath) // add a static file (no front matter) content = `go away!` file = newFile(config.SrcDir, "robots.txt", content) site, err := Load(*config) assertEqual(t, err, nil) assertEqual(t, len(site.posts), 2) assertEqual(t, len(site.pages), 1) assertEqual(t, len(site.layouts), 2) _, ok := site.layouts["base"] assert(t, ok) _, ok = site.layouts["post"] assert(t, ok) output, err := site.render(site.templates[helloPath]) assertEqual(t, err, nil) assertEqual(t, string(output), `Hello world!
`) output, err = site.render(site.templates[goodbyePath]) assertEqual(t, err, nil) assertEqual(t, string(output), `goodbye world!
`) output, err = site.render(site.templates[aboutPath]) assertEqual(t, err, nil) assertEqual(t, string(output), `about this site
`) } func TestRenderArchive(t *testing.T) { config := newProject() defer os.RemoveAll(config.RootDir) content := `--- title: hello world! date: 2024-01-01 ---Hello world!
` file := newFile(config.SrcDir, "hello.html", content) defer os.Remove(file.Name()) content = `--- title: goodbye! date: 2024-02-01 ---goodbye world!
` file = newFile(config.SrcDir, "goodbye.html", content) defer os.Remove(file.Name()) content = `--- title: an oldie! date: 2023-01-01 ---oldie
` file = newFile(config.SrcDir, "an-oldie.html", content) defer os.Remove(file.Name()) // add a page (no date) content = `--- ---Hello world!
` file := newFile(config.SrcDir, "hello.html", content) defer os.Remove(file.Name()) content = `--- title: goodbye! date: 2024-02-01 tags: [web] ---goodbye world!
` file = newFile(config.SrcDir, "goodbye.html", content) defer os.Remove(file.Name()) content = `--- title: an oldie! date: 2023-01-01 tags: [software] ---oldie
` file = newFile(config.SrcDir, "an-oldie.html", content) defer os.Remove(file.Name()) // add a page (no date) content = `--- --- {% for tag in site.tags | keys | sort %}Hello world!
` file := newFile(config.SrcDir, "01-hello.html", content) defer os.Remove(file.Name()) content = `--- title: "3. goodbye!" ---goodbye world!
` file = newFile(config.SrcDir, "03-goodbye.html", content) defer os.Remove(file.Name()) content = `--- title: "2. an oldie!" ---oldie
` file = newFile(config.SrcDir, "02-an-oldie.html", content) defer os.Remove(file.Name()) // add a page (no date) content = `--- ---the intro paragraph
and another paragraph>` file := newFile(config.SrcDir, "hello.html", content) defer os.Remove(file.Name()) content = `--- title: goodbye! date: 2024-02-01 tags: [web] excerpt: an overridden excerpt ---
goodbye world!
and another paragraph
` file = newFile(config.SrcDir, "goodbye.html", content) defer os.Remove(file.Name()) content = `--- title: an oldie! date: 2023-01-01 tags: [software] --- ` file = newFile(config.SrcDir, "an-oldie.html", content) defer os.Remove(file.Name()) // add a page (no date) content = `--- --- {% for post in site.posts %} {{post.title}} - {{post.excerpt}} {% endfor %} ` file = newFile(config.SrcDir, "about.html", content) defer os.Remove(file.Name()) site, err := Load(*config) output, err := site.render(site.templates[file.Name()]) assertEqual(t, err, nil) assertEqual(t, strings.TrimSpace(string(output)), `goodbye! - an overridden excerpt hello world! - the intro paragraph an oldie! -`) } func TestRenderDataFile(t *testing.T) { config := newProject() defer os.RemoveAll(config.RootDir) content := ` - name: feedi url: https://github.com/facundoolano/feedi - name: jorge url: https://github.com/facundoolano/jorge ` file := newFile(config.DataDir, "projects.yml", content) defer os.Remove(file.Name()) // add a page (no date) content = `--- ---