Files
notarius/internal/framework/prompt/render_test.go

67 lines
1.9 KiB
Go

package prompt
import (
"strings"
"testing"
)
func TestRenderUserSystemReturnsTextAndMetadata(t *testing.T) {
system, user, metadata, err := RenderUserSystem(TestGenericPromptID, map[string]any{
"Task": "Summarize",
"Input": "Example input",
})
if err != nil {
t.Fatalf("RenderUserSystem: %v", err)
}
if !strings.Contains(system, "generic Notarius test prompt") {
t.Fatalf("unexpected system prompt: %q", system)
}
if !strings.Contains(user, "Task: Summarize") || !strings.Contains(user, "Example input") {
t.Fatalf("unexpected user prompt: %q", user)
}
if strings.TrimSpace(system) != system {
t.Fatalf("expected trimmed system prompt: %q", system)
}
if strings.TrimSpace(user) != user {
t.Fatalf("expected trimmed user prompt: %q", user)
}
if metadata.PromptID != TestGenericPromptID {
t.Fatalf("unexpected metadata: %+v", metadata)
}
}
func TestRenderUserSystemUnknownPromptReturnsError(t *testing.T) {
_, _, _, err := RenderUserSystem("unknown", map[string]any{})
if err == nil || !strings.Contains(err.Error(), "unknown prompt id") {
t.Fatalf("expected unknown prompt error, got %v", err)
}
}
func TestRenderUserSystemMissingTemplateDataReturnsError(t *testing.T) {
_, _, _, err := RenderUserSystem(TestGenericPromptID, map[string]any{
"Task": "Summarize",
})
if err == nil || !strings.Contains(err.Error(), "Input") {
t.Fatalf("expected missing template data error, got %v", err)
}
}
func TestRenderUserSystemIncludesHardeningText(t *testing.T) {
system, _, _, err := RenderUserSystem(TestGenericPromptID, map[string]any{
"Task": "Summarize",
"Input": "Example input",
})
if err != nil {
t.Fatalf("RenderUserSystem: %v", err)
}
hardening := strings.TrimSpace(HardeningText())
if hardening == "" {
t.Fatalf("expected hardening text")
}
if !strings.Contains(system, hardening) {
t.Fatalf("expected rendered system prompt to include hardening text: %q", system)
}
}