39 lines
1.4 KiB
Go
39 lines
1.4 KiB
Go
|
|
package promptkit
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"go.maximumdirect.net/promptkit/internal/domain"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestExchangeDetailsAndRequestConversion(t *testing.T) {
|
||
|
|
var nilExchange *Exchange
|
||
|
|
if got := nilExchange.Details(); got.RunID != "" || got.Messages != nil {
|
||
|
|
t.Fatalf("nil details = %#v", got)
|
||
|
|
}
|
||
|
|
if _, err := toDomainRunRequest(RunRequest{ContinueFrom: &Exchange{}}); err == nil {
|
||
|
|
t.Fatal("empty exchange accepted")
|
||
|
|
}
|
||
|
|
history := domain.CaptureExchange(nil, "source", []domain.RenderedMessage{{Role: domain.RoleUser, Content: "private", CacheControl: &domain.CacheControl{Type: domain.CacheControlEphemeral, TTL: "1h"}}}, "answer")
|
||
|
|
handle := &Exchange{internal: history}
|
||
|
|
request, err := toDomainRunRequest(RunRequest{ContinueFrom: handle})
|
||
|
|
if err != nil || request.ContinueFrom != history || !request.CaptureExchange {
|
||
|
|
t.Fatalf("request = %#v, error = %v", request, err)
|
||
|
|
}
|
||
|
|
details := handle.Details()
|
||
|
|
details.Messages[0].CacheControl.TTL = "changed"
|
||
|
|
if handle.Details().Messages[0].CacheControl.TTL != "1h" {
|
||
|
|
t.Fatal("details changed exchange")
|
||
|
|
}
|
||
|
|
if strings.Contains(fmt.Sprintf("%v %#v", handle, handle), "private") {
|
||
|
|
t.Fatal("format exposed history")
|
||
|
|
}
|
||
|
|
encoded, err := json.Marshal(PreparedRun{ParentRunID: "source"})
|
||
|
|
if err != nil || !strings.Contains(string(encoded), `"parent_run_id":"source"`) {
|
||
|
|
t.Fatalf("prepared JSON = %s, %v", encoded, err)
|
||
|
|
}
|
||
|
|
}
|