36 lines
936 B
Go
36 lines
936 B
Go
package observability
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestWarnEnrichesSourceAndErrorContext(t *testing.T) {
|
|
fields := enrichFields(LogLevelWarn, map[string]any{"anime_id": 123}, wrappedError())
|
|
|
|
if fields["anime_id"] != 123 {
|
|
t.Fatalf("expected existing field to survive, got %#v", fields["anime_id"])
|
|
}
|
|
|
|
source, ok := fields["source"].(string)
|
|
if !ok || source == "" {
|
|
t.Fatalf("expected source field, got %#v", fields["source"])
|
|
}
|
|
|
|
errorType, ok := fields["error_type"].(string)
|
|
if !ok || errorType == "" {
|
|
t.Fatalf("expected error_type field, got %#v", fields["error_type"])
|
|
}
|
|
|
|
chain, ok := fields["error_chain"].(string)
|
|
if !ok || !strings.Contains(chain, "query anime") || !strings.Contains(chain, "db timeout") {
|
|
t.Fatalf("expected wrapped error chain, got %#v", fields["error_chain"])
|
|
}
|
|
}
|
|
|
|
func wrappedError() error {
|
|
return fmt.Errorf("query anime: %w", errors.New("db timeout"))
|
|
}
|