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 }