claude-web-chat/templates_test.go
djuka 3283888738
All checks were successful
Tests / unit-tests (push) Successful in 51s
Inicijalna implementacija Claude Web Chat (Faza 1 - CLI mod)
- 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>
2026-02-18 05:03:40 +00:00

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")
}
})
}