Add embedded prompt registry
This commit is contained in:
87
internal/framework/prompt/registry_test.go
Normal file
87
internal/framework/prompt/registry_test.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package prompt
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLookupMetadataSucceedsForGenericPrompt(t *testing.T) {
|
||||
metadata, ok := LookupMetadata(TestGenericPromptID)
|
||||
if !ok {
|
||||
t.Fatalf("expected metadata for %q", TestGenericPromptID)
|
||||
}
|
||||
|
||||
if metadata.PromptID != TestGenericPromptID {
|
||||
t.Fatalf("unexpected prompt ID: %q", metadata.PromptID)
|
||||
}
|
||||
if metadata.PromptVersion != VersionV1 {
|
||||
t.Fatalf("unexpected prompt version: %q", metadata.PromptVersion)
|
||||
}
|
||||
if metadata.PromptSource != SourceBuiltin {
|
||||
t.Fatalf("unexpected prompt source: %q", metadata.PromptSource)
|
||||
}
|
||||
if metadata.EmbeddedPath != "assets/test/generic" {
|
||||
t.Fatalf("unexpected embedded path: %q", metadata.EmbeddedPath)
|
||||
}
|
||||
if !strings.HasPrefix(metadata.SHA256, "sha256:") {
|
||||
t.Fatalf("expected prefixed hash, got %q", metadata.SHA256)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLookupMetadataUnknownReturnsFalse(t *testing.T) {
|
||||
if metadata, ok := LookupMetadata("unknown"); ok {
|
||||
t.Fatalf("expected unknown prompt lookup to fail, got %+v", metadata)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMustLookupMetadataPanicsForUnknownPromptID(t *testing.T) {
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Fatalf("expected panic")
|
||||
}
|
||||
}()
|
||||
|
||||
_ = MustLookupMetadata("unknown")
|
||||
}
|
||||
|
||||
func TestRegisteredMetadataSortedByPromptID(t *testing.T) {
|
||||
registered := RegisteredMetadata()
|
||||
if len(registered) != 1 {
|
||||
t.Fatalf("expected one registered prompt, got %d", len(registered))
|
||||
}
|
||||
|
||||
ids := make([]string, len(registered))
|
||||
for i, metadata := range registered {
|
||||
ids[i] = metadata.PromptID
|
||||
}
|
||||
if !sort.StringsAreSorted(ids) {
|
||||
t.Fatalf("expected sorted prompt IDs, got %v", ids)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHardeningTextAvailable(t *testing.T) {
|
||||
hardening := strings.TrimSpace(HardeningText())
|
||||
if hardening == "" {
|
||||
t.Fatalf("expected hardening text")
|
||||
}
|
||||
if !strings.Contains(hardening, "source text") {
|
||||
t.Fatalf("unexpected hardening text: %q", hardening)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMetadataDiagnosticsMapOmitsRenderedPromptText(t *testing.T) {
|
||||
metadata := MustLookupMetadata(TestGenericPromptID)
|
||||
diagnostics := metadata.DiagnosticsMap()
|
||||
|
||||
for _, key := range []string{"prompt_id", "prompt_version", "prompt_source", "embedded_path", "sha256"} {
|
||||
if diagnostics[key] == "" {
|
||||
t.Fatalf("expected diagnostics key %q, got %#v", key, diagnostics)
|
||||
}
|
||||
}
|
||||
for _, key := range []string{"system", "user", "text", "rendered"} {
|
||||
if _, ok := diagnostics[key]; ok {
|
||||
t.Fatalf("diagnostics should omit rendered prompt text: %#v", diagnostics)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user