package message

import (
	"encoding/json"
	"testing"

	"github.com/stretchr/testify/require"
)

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

	msg := ReceiveMessage{MessageID: "msg_team"}
	recipient := AgentRecipient{
		AgentID:       "agt_team",
		AgentMemberID: "mem_agent",
		TeamContexts: []TeamDeliveryContext{{
			TeamID:                    "team_core",
			TeamHandle:                "core-team",
			TeamDisplayName:           "Core Team",
			TeamDescription:           "Core ownership",
			TeamMemberID:              "wtm_agent",
			RoleLabel:                 "Builder",
			RoleOverlayPromptSnapshot: "Build it.",
			RoleOverlayVersion:        9,
			MemberRoster: []TeamDeliveryRosterMember{{
				TeamMemberID:      "wtm_agent",
				ActorKind:         "agent",
				ActorID:           "mem_agent",
				DisplayName:       "AgentTeam Agent",
				Handle:            "agentteam-agent",
				RoleLabel:         "Builder",
				RoleOverlayPrompt: "Build it.",
				WakeOnTeamMention: true,
				DeliveryKind:      "wake",
				Self:              true,
			}},
		}},
	}

	got := ReceiveMessageWithRecipientTeamContexts(msg, recipient)
	require.Len(t, got.TeamContexts, 1)
	require.Equal(t, "Build it.", got.TeamContexts[0].RoleOverlayPrompt)
	require.Len(t, got.TeamContexts[0].MemberRoster, 1)
	require.Equal(t, "wtm_agent", got.TeamContexts[0].MemberRoster[0].TeamMemberID)
	require.True(t, got.TeamContexts[0].MemberRoster[0].Self)
	require.Equal(t, "Build it.", got.TeamContexts[0].MemberRoster[0].RoleOverlayPrompt)
	require.True(t, got.TeamContexts[0].MemberRoster[0].WakeOnTeamMention)

	raw, err := json.Marshal(got)
	require.NoError(t, err)
	require.NotContains(t, string(raw), "RoleOverlayVersion")
}
