package model

import (
	"testing"
	"time"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/core/domain"
)

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

	verifiedAt := time.Now().UTC()
	require.False(t, User{}.HasVerifiedIdentity())
	require.True(t, User{EmailVerifiedAt: &verifiedAt}.HasVerifiedEmail())
	require.True(t, User{EmailVerifiedAt: &verifiedAt}.HasVerifiedIdentity())
	require.False(t, User{MobileVerifiedAt: &verifiedAt}.HasVerifiedMobile())
	require.True(t, User{Mobile: "+15551234567", MobileVerifiedAt: &verifiedAt}.HasVerifiedMobile())
	require.True(t, User{Mobile: "+15551234567", MobileVerifiedAt: &verifiedAt}.HasVerifiedIdentity())
}

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

	role := domain.WorkspaceRoleAdmin
	userID := "usr_123"
	member := Member{ID: "mem_123", WorkspaceID: "wsp_123", Type: domain.MemberTypeHuman, DisplayName: "Ada", UserID: &userID, WorkspaceRole: &role}
	require.Equal(t, domain.MemberTypeHuman, member.Type)
	require.Equal(t, userID, *member.UserID)
	require.Equal(t, role, *member.WorkspaceRole)

	metadata := map[string]any{"k": "v"}
	record := ThreadMessageRecord{MessageID: "msg_123", Seq: 42, AuthorType: string(domain.MemberTypeHuman), Metadata: metadata}
	require.Equal(t, int64(42), record.Seq)
	require.Equal(t, "v", record.Metadata["k"])
}
