1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-02-05 10:45:09 +02:00
pocketbase/tools/template/registry_test.go
2023-07-23 15:37:30 +03:00

87 lines
2.1 KiB
Go

package template
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestNewRegistry(t *testing.T) {
r := NewRegistry()
if r.cache == nil {
t.Fatalf("Expected cache store to be initialized, got nil")
}
if v := r.cache.Length(); v != 0 {
t.Fatalf("Expected cache store length to be 0, got %d", v)
}
}
func TestRegistryLoadFiles(t *testing.T) {
r := NewRegistry()
t.Run("invalid or missing files", func(t *testing.T) {
r.LoadFiles("file1.missing", "file2.missing")
key := "file1.missing,file2.missing"
renderer := r.cache.Get(key)
if renderer == nil {
t.Fatal("Expected renderer to be initialized even if invalid, got nil")
}
if renderer.template != nil {
t.Fatalf("Expected renderer template to be nil, got %v", renderer.template)
}
if renderer.parseError == nil {
t.Fatalf("Expected renderer parseError to be set, got nil")
}
})
t.Run("valid files", func(t *testing.T) {
// create test templates
dir, err := os.MkdirTemp(os.TempDir(), "template_test")
if err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, "base.html"), []byte(`Base:{{template "content"}}`), 0644); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, "content.html"), []byte(`{{define "content"}}Content:123{{end}}`), 0644); err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
files := []string{filepath.Join(dir, "base.html"), filepath.Join(dir, "content.html")}
r.LoadFiles(files...)
renderer := r.cache.Get(strings.Join(files, ","))
if renderer == nil {
t.Fatal("Expected renderer to be initialized even if invalid, got nil")
}
if renderer.template == nil {
t.Fatal("Expected renderer template to be set, got nil")
}
if renderer.parseError != nil {
t.Fatalf("Expected renderer parseError to be nil, got %v", renderer.parseError)
}
result, err := renderer.Render(nil)
if err != nil {
t.Fatalf("Unexpected Render() error, got %v", err)
}
expected := "Base:Content:123"
if result != expected {
t.Fatalf("Expected Render() result %q, got %q", expected, result)
}
})
}