Add DnD reference prompt helpers
This commit is contained in:
60
internal/modules/sharedassets/dnd/references_test.go
Normal file
60
internal/modules/sharedassets/dnd/references_test.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package dnd
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/notarius/internal/framework/contracts"
|
||||
)
|
||||
|
||||
func TestReferenceMediaTypesReturnsDefensiveCopy(t *testing.T) {
|
||||
want := []string{
|
||||
"application/json",
|
||||
"application/x-yaml",
|
||||
"application/yaml",
|
||||
"text/markdown",
|
||||
"text/plain",
|
||||
}
|
||||
got := ReferenceMediaTypes()
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("ReferenceMediaTypes() = %#v, want %#v", got, want)
|
||||
}
|
||||
got[0] = "changed"
|
||||
if again := ReferenceMediaTypes(); again[0] != "application/json" {
|
||||
t.Fatalf("ReferenceMediaTypes() reused backing storage: %#v", again)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReferenceSlotsUseDescriptionsAndExpectedOrder(t *testing.T) {
|
||||
descriptions := ReferenceSlotDescriptions{
|
||||
Glossary: "Glossary reference",
|
||||
Party: "Party reference",
|
||||
Players: "Players reference",
|
||||
Roster: "Roster reference",
|
||||
}
|
||||
got := ReferenceSlots(descriptions)
|
||||
want := []contracts.ReferenceSlot{
|
||||
{Name: "glossary", Description: descriptions.Glossary, AcceptedMediaTypes: ReferenceMediaTypes()},
|
||||
{Name: "party", Description: descriptions.Party, AcceptedMediaTypes: ReferenceMediaTypes()},
|
||||
{Name: "players", Description: descriptions.Players, AcceptedMediaTypes: ReferenceMediaTypes()},
|
||||
{Name: "roster", Description: descriptions.Roster, AcceptedMediaTypes: ReferenceMediaTypes()},
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("ReferenceSlots() = %#v, want %#v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReferenceSlotsReturnDefensiveCopies(t *testing.T) {
|
||||
first := ReferenceSlots(ReferenceSlotDescriptions{})
|
||||
second := ReferenceSlots(ReferenceSlotDescriptions{})
|
||||
|
||||
first[0].Name = "changed"
|
||||
first[0].AcceptedMediaTypes[0] = "changed"
|
||||
|
||||
if second[0].Name != "glossary" {
|
||||
t.Fatalf("ReferenceSlots() reused slot slice: %#v", second)
|
||||
}
|
||||
if second[0].AcceptedMediaTypes[0] != "application/json" {
|
||||
t.Fatalf("ReferenceSlots() reused media type slice: %#v", second)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user