Cover reference prompts for chunk and normalize usage
This commit is contained in:
@@ -97,6 +97,57 @@ func TestRenderUserSystemWithReferencesRendersDeclaredSlots(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderUserSystemWithReferencesSupportsChunkRequestData(t *testing.T) {
|
||||
bundle := loadReferenceBundle(t,
|
||||
[]contracts.ReferenceSlot{{Name: "scene_guide"}},
|
||||
`Chunk system has guide={{ hasreference "scene_guide" }}`,
|
||||
`Source={{ .SourceID }} Guide={{ reference "scene_guide" }}`,
|
||||
)
|
||||
references := contracts.ReferenceSet{Slots: map[string]contracts.ResolvedReferenceSlot{
|
||||
"scene_guide": {
|
||||
Slot: contracts.ReferenceSlot{Name: "scene_guide"},
|
||||
Items: []contracts.ReferenceItem{
|
||||
{SlotName: "scene_guide", Content: []byte("Keep combat scenes separate.")},
|
||||
},
|
||||
},
|
||||
}}
|
||||
|
||||
system, user, _, err := bundle.RenderUserSystemWithReferences(map[string]any{"SourceID": "session-alpha"}, references)
|
||||
if err != nil {
|
||||
t.Fatalf("RenderUserSystemWithReferences: %v", err)
|
||||
}
|
||||
if !strings.Contains(system, "has guide=true") {
|
||||
t.Fatalf("system = %q, want chunk reference presence", system)
|
||||
}
|
||||
if !strings.Contains(user, "Source=session-alpha") || !strings.Contains(user, "Keep combat scenes separate.") {
|
||||
t.Fatalf("user = %q, want chunk request data and reference content", user)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderUserSystemWithReferencesSupportsNormalizeRequestData(t *testing.T) {
|
||||
bundle := loadReferenceBundle(t,
|
||||
[]contracts.ReferenceSlot{{Name: "normalization_notes"}},
|
||||
`Normalize system`,
|
||||
`Lane={{ .LaneID }} Notes={{ reference "normalization_notes" }}`,
|
||||
)
|
||||
references := contracts.ReferenceSet{Slots: map[string]contracts.ResolvedReferenceSlot{
|
||||
"normalization_notes": {
|
||||
Slot: contracts.ReferenceSlot{Name: "normalization_notes"},
|
||||
Items: []contracts.ReferenceItem{
|
||||
{SlotName: "normalization_notes", Content: []byte("Prefer canonical item names.")},
|
||||
},
|
||||
},
|
||||
}}
|
||||
|
||||
_, user, _, err := bundle.RenderUserSystemWithReferences(map[string]any{"LaneID": "spells"}, references)
|
||||
if err != nil {
|
||||
t.Fatalf("RenderUserSystemWithReferences: %v", err)
|
||||
}
|
||||
if !strings.Contains(user, "Lane=spells") || !strings.Contains(user, "Prefer canonical item names.") {
|
||||
t.Fatalf("user = %q, want normalize request data and reference content", user)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderUserSystemReferenceHasReferenceRequiresContent(t *testing.T) {
|
||||
bundle := loadReferenceBundle(t,
|
||||
[]contracts.ReferenceSlot{{Name: "roster"}},
|
||||
|
||||
Reference in New Issue
Block a user