package manage

import (
	"encoding/json"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/store/message"
)

func TestScheduleViewMentionHintsMarshalBrowserFieldNames(t *testing.T) {
	t.Parallel()

	data, err := json.Marshal(ScheduleView{
		Name:            "Mentioned schedule",
		Status:          StatusActive,
		SourceKind:      SourceKindTime,
		Target:          TargetView{Kind: TargetKindChannel, Ref: "chn_1"},
		MessageTemplate: "hello @core",
		MentionHints: []message.MessageMentionHint{{
			Type:     "team",
			ID:       "team_core",
			Token:    "core",
			Metadata: map[string]any{"source": "composer"},
		}},
	})
	require.NoError(t, err)

	var payload map[string]any
	require.NoError(t, json.Unmarshal(data, &payload))
	mentions, ok := payload["mentions"].([]any)
	require.True(t, ok)
	require.Len(t, mentions, 1)
	hint, ok := mentions[0].(map[string]any)
	require.True(t, ok)
	require.Equal(t, "team", hint["type"])
	require.Equal(t, "team_core", hint["id"])
	require.Equal(t, "core", hint["token"])
	require.Equal(t, map[string]any{"source": "composer"}, hint["metadata"])
	require.NotContains(t, hint, "Type")
	require.NotContains(t, hint, "ID")
	require.NotContains(t, hint, "Token")
	require.NotContains(t, hint, "Metadata")
}
