pagr

A 'static site generator', built using dati.
Log | Files | Refs | Atom

page_test.go (2325B)


      1 package main
      2 
      3 import (
      4 	"io/ioutil"
      5 	"notabug.org/gearsix/suti"
      6 	"os"
      7 	"path/filepath"
      8 	"testing"
      9 	"time"
     10 )
     11 
     12 func TestMergeMeta(test *testing.T) {
     13 	test.Parallel()
     14 
     15 	var orig Meta
     16 	merge := make(Meta)
     17 	merge["test"] = "overwritten"
     18 	merge["new"] = "data"
     19 
     20 	orig = make(Meta)
     21 	orig["test"] = "data"
     22 	orig.MergeMeta(merge, false)
     23 	if val, ok := orig["test"]; ok {
     24 		if val == "overwritten" {
     25 			test.Fatalf("invalid 'test' value: %s", val)
     26 		}
     27 	} else if !ok {
     28 		test.Fatalf("unable to parse 'test' key")
     29 	}
     30 	if _, ok := orig["new"]; !ok {
     31 		test.Fatalf("unable to parse 'new' key")
     32 	}
     33 
     34 	orig = make(Meta)
     35 	orig["test"] = "data"
     36 	orig.MergeMeta(merge, true)
     37 	if val, ok := orig["test"]; ok {
     38 		if val != "overwritten" {
     39 			test.Fatalf("invalid 'test' value: %s", val)
     40 		}
     41 	} else if !ok {
     42 		test.Fatalf("unable to parse 'test' key")
     43 	}
     44 	if _, ok := orig["new"]; !ok {
     45 		test.Fatalf("unable to parse 'new' key")
     46 	}
     47 }
     48 
     49 func TestNewPage(test *testing.T) {
     50 	test.Parallel()
     51 
     52 	const path = "/test/path"
     53 	var updated = time.Now()
     54 
     55 	p := NewPage(path, updated)
     56 
     57 	if p.Slug != "path" || p.Path != path || p.Updated != updated.Format(timefmt) {
     58 		test.Fatal("invalid Page", p)
     59 	}
     60 }
     61 
     62 func TestTemplateName(test *testing.T) {
     63 	test.Parallel()
     64 
     65 	p := NewPage("/test", time.Now())
     66 	p.Meta["Template"] = "test1"
     67 	if p.TemplateName("foo") != "test1" {
     68 		test.Fatalf("'test1' not returned from TemplateName()")
     69 	}
     70 	p.Meta["template"] = "test2"
     71 	if p.TemplateName("foo") != "test2" {
     72 		test.Fatalf("'test2' not returned from TemplateName()")
     73 	}
     74 }
     75 
     76 func TestBuild(test *testing.T) {
     77 	test.Parallel()
     78 
     79 	var err error
     80 	tdir := filepath.Join(os.TempDir(), "pagr_test", "TestBuild")
     81 	if err := os.MkdirAll(tdir, 0775); err != nil {
     82 		test.Errorf("failed to create temporary test dir: %s", tdir)
     83 	}
     84 	p := NewPage("/test", time.Now())
     85 	t, err := suti.LoadTemplateString("tmpl", "test", `{{.Meta.Title}} {{template "p" .}}`, map[string]string{"p": "p"})
     86 	if err != nil {
     87 		test.Error(err)
     88 	}
     89 
     90 	var fpath string
     91 	if fpath, err = p.Build(tdir, t); err != nil {
     92 		test.Fatal(err)
     93 	}
     94 	var fbuf []byte
     95 	if fbuf, err = ioutil.ReadFile(fpath); err != nil {
     96 		test.Fatal(err)
     97 	}
     98 	if string(fbuf) != "Test p" {
     99 		test.Fatalf("invalid result parsed: '%s', expected: 'Test p'", string(fbuf))
    100 	}
    101 
    102 	if err := os.RemoveAll(tdir); err != nil {
    103 		test.Error(err)
    104 	}
    105 }