Add execution control request contracts
This commit is contained in:
38
execution_controls_conversion_test.go
Normal file
38
execution_controls_conversion_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package promptkit
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"go.maximumdirect.net/promptkit/internal/domain"
|
||||
)
|
||||
|
||||
func TestExecutionControlsConversion(t *testing.T) {
|
||||
ctx := context.WithValue(context.Background(), struct{}{}, "selected")
|
||||
called := false
|
||||
req := RunRequest{OperationTimeout: 3 * time.Second, OnPrepared: func(got context.Context, details PreparedRun) {
|
||||
called = true
|
||||
if got != ctx || details.PromptID != "prompt" {
|
||||
t.Fatalf("unexpected notification: %v, %+v", got, details)
|
||||
}
|
||||
details.InputHashes["input"] = "changed"
|
||||
}}
|
||||
converted, err := toDomainRunRequest(req)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if converted.OperationTimeout != req.OperationTimeout || converted.OnPrepared == nil || called {
|
||||
t.Fatal("execution controls were not retained without invocation")
|
||||
}
|
||||
req.OnPrepared = func(context.Context, PreparedRun) { t.Fatal("callback selection changed") }
|
||||
prepared := &domain.PreparedRun{PromptID: "prompt", InputHashes: map[string]string{"input": "original"}}
|
||||
converted.OnPrepared(ctx, prepared)
|
||||
if !called || prepared.InputHashes["input"] != "original" {
|
||||
t.Fatal("notification did not deliver detached details")
|
||||
}
|
||||
withoutCallback, err := toDomainRunRequest(RunRequest{})
|
||||
if err != nil || withoutCallback.OnPrepared != nil {
|
||||
t.Fatalf("nil callback was adapted: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user