package trace_test

import (
	"context"
	"testing"

	"github.com/cloudwego/eino/compose"
	"github.com/hhs/camtalk/internal/trace"
)

func TestEinoContextPropagation(t *testing.T) {
	ctx := context.Background()
	testTraceID := "01J5TEST123456789"
	ctx = trace.WithTraceID(ctx, testTraceID)

	var capturedTraceID string

	g := compose.NewGraph[string, string]()
	g.AddLambdaNode("test_node", compose.InvokableLambda(
		func(ctx context.Context, input string) (string, error) {
			capturedTraceID = trace.GetTraceID(ctx)
			return "ok", nil
		},
	))
	g.AddEdge(compose.START, "test_node")
	g.AddEdge("test_node", compose.END)

	runnable, err := g.Compile(ctx)
	if err != nil {
		t.Fatalf("compile failed: %v", err)
	}

	_, err = runnable.Invoke(ctx, "test_input")
	if err != nil {
		t.Fatalf("invoke failed: %v", err)
	}

	if capturedTraceID != testTraceID {
		t.Errorf("trace_id lost in Eino propagation: got %q, want %q",
			capturedTraceID, testTraceID)
	}
}
