Cover reference prompts for chunk and normalize usage

This commit is contained in:
2026-07-05 16:39:41 +00:00
parent 22032dfd6d
commit c1ba94192d

View File

@@ -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"}},