51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package promptkit
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/usecase"
|
|
)
|
|
|
|
func TestMapPublicErrorPreservesGenerationCancellation(t *testing.T) {
|
|
internalErr := fmt.Errorf("%w: %w", usecase.ErrLLMGenerate, context.Canceled)
|
|
|
|
err := mapPublicError(internalErr)
|
|
if !errors.Is(err, ErrLLMGenerate) {
|
|
t.Fatalf("mapped error=%v, want ErrLLMGenerate", err)
|
|
}
|
|
if !errors.Is(err, context.Canceled) {
|
|
t.Fatalf("mapped error=%v, want context.Canceled", err)
|
|
}
|
|
}
|
|
|
|
func TestMapPublicErrorTranslatesCapacityError(t *testing.T) {
|
|
internalErr := &usecase.CapacityError{BackendID: "limited"}
|
|
|
|
err := mapPublicError(internalErr)
|
|
var publicErr *CapacityError
|
|
if !errors.As(err, &publicErr) || publicErr == nil {
|
|
t.Fatalf("mapped error=%v, want public CapacityError", err)
|
|
}
|
|
if publicErr.BackendID != "limited" {
|
|
t.Fatalf("mapped backend ID=%q, want limited", publicErr.BackendID)
|
|
}
|
|
if !errors.Is(err, ErrCapacityExceeded) {
|
|
t.Fatalf("mapped error=%v, want ErrCapacityExceeded", err)
|
|
}
|
|
if errors.Is(err, ErrInvalidRequest) || errors.Is(err, ErrLLMGenerate) {
|
|
t.Fatalf("mapped capacity error has an unrelated category: %v", err)
|
|
}
|
|
var leakedInternalErr *usecase.CapacityError
|
|
if errors.As(err, &leakedInternalErr) {
|
|
t.Fatalf("mapped error exposes internal CapacityError: %v", err)
|
|
}
|
|
|
|
internalErr.BackendID = "changed"
|
|
if publicErr.BackendID != "limited" {
|
|
t.Fatalf("mapped backend ID changed with source error: %q", publicErr.BackendID)
|
|
}
|
|
}
|