6019f2aafa
Tests para builders puros (build_html, build_text, with_attachment), template_render, smtp_connect y smtp_send con mock TCP server. Todos los tests pasan: 18 casos cubriendo pureza, inmutabilidad y envio SMTP. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package infra
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestEmailTemplateRender(t *testing.T) {
|
|
t.Run("renderiza template simple con datos", func(t *testing.T) {
|
|
got, err := EmailTemplateRender("Hola {{.Name}}", map[string]any{"Name": "Alice"})
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if got != "Hola Alice" {
|
|
t.Errorf("got %q, want %q", got, "Hola Alice")
|
|
}
|
|
})
|
|
|
|
t.Run("sustituye multiples variables", func(t *testing.T) {
|
|
tmpl := "Pedido {{.OrderID}} para {{.Customer}} listo."
|
|
got, err := EmailTemplateRender(tmpl, map[string]any{"OrderID": "ORD-42", "Customer": "Bob"})
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if !strings.Contains(got, "ORD-42") || !strings.Contains(got, "Bob") {
|
|
t.Errorf("got %q, expected OrderID and Customer", got)
|
|
}
|
|
})
|
|
|
|
t.Run("error en template invalido", func(t *testing.T) {
|
|
_, err := EmailTemplateRender("{{.Unclosed", nil)
|
|
if err == nil {
|
|
t.Error("expected error for invalid template, got nil")
|
|
}
|
|
})
|
|
|
|
t.Run("template vacio retorna string vacio", func(t *testing.T) {
|
|
got, err := EmailTemplateRender("", nil)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if got != "" {
|
|
t.Errorf("got %q, want empty string", got)
|
|
}
|
|
})
|
|
}
|