package run

import (
	"encoding/json"
	"strings"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/workflow/runartifact"
)

func TestExternalizeEffectResultOutputKeepsReceiptCompact(t *testing.T) {
	large := strings.Repeat("x", MaxRunPayloadBytes+1024)
	raw, err := json.Marshal(map[string]any{
		"messageId": "msg_1",
		"output":    map[string]any{"aggregate": large},
	})
	require.NoError(t, err)
	var captured []json.RawMessage
	compacted, err := runartifact.ExternalizeObjectField(raw, "output", MaxRunPayloadBytes, func(value []byte) ([]byte, error) {
		captured = append(captured, append([]byte(nil), value...))
		return []byte(`{"$workflowArtifact":{"artifactId":"wfa_test"}}`), nil
	})
	require.NoError(t, err)
	require.Len(t, captured, 1)
	require.LessOrEqual(t, len(compacted), MaxRunPayloadBytes)
	var envelope map[string]json.RawMessage
	require.NoError(t, json.Unmarshal(compacted, &envelope))
	require.JSONEq(t, `{"$workflowArtifact":{"artifactId":"wfa_test"}}`, string(envelope["output"]))
}
