All checks were successful
Tests / unit-tests (push) Successful in 51s
- Login sa session cookie autentifikacijom - Lista projekata iz filesystem-a - Chat sa Claude CLI preko WebSocket-a - Streaming NDJSON parsiranje iz CLI stdout-a - Sesija zivi nezavisno od browsera (reconnect replay) - Sidebar sa .md fajlovima i markdown renderovanjem - Dark tema, htmx + Go templates - 47 unit testova Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestTemplateRenderer(t *testing.T) {
|
|
dir := t.TempDir()
|
|
|
|
os.WriteFile(filepath.Join(dir, "test.html"), []byte(`<h1>{{.Title}}</h1>`), 0644)
|
|
os.WriteFile(filepath.Join(dir, "plain.html"), []byte(`<p>Hello</p>`), 0644)
|
|
|
|
tr, err := NewTemplateRenderer(dir)
|
|
if err != nil {
|
|
t.Fatalf("NewTemplateRenderer: %v", err)
|
|
}
|
|
|
|
t.Run("render with data", func(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
err := tr.Render(&buf, "test.html", map[string]string{"Title": "World"})
|
|
if err != nil {
|
|
t.Fatalf("Render: %v", err)
|
|
}
|
|
if buf.String() != "<h1>World</h1>" {
|
|
t.Errorf("got %q", buf.String())
|
|
}
|
|
})
|
|
|
|
t.Run("render plain", func(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
err := tr.Render(&buf, "plain.html", nil)
|
|
if err != nil {
|
|
t.Fatalf("Render: %v", err)
|
|
}
|
|
if buf.String() != "<p>Hello</p>" {
|
|
t.Errorf("got %q", buf.String())
|
|
}
|
|
})
|
|
|
|
t.Run("template not found", func(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
err := tr.Render(&buf, "missing.html", nil)
|
|
if err == nil {
|
|
t.Fatal("expected error for missing template")
|
|
}
|
|
})
|
|
|
|
t.Run("empty dir", func(t *testing.T) {
|
|
emptyDir := t.TempDir()
|
|
tr2, err := NewTemplateRenderer(emptyDir)
|
|
if err != nil {
|
|
t.Fatalf("NewTemplateRenderer: %v", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
err = tr2.Render(&buf, "anything.html", nil)
|
|
if err == nil {
|
|
t.Fatal("expected error")
|
|
}
|
|
})
|
|
}
|