package peers

import (
	"context"
	"testing"

	"github.com/stretchr/testify/require"

	"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)

func TestManager_Search(t *testing.T) {
	a := require.New(t)
	ctx := context.Background()
	mock, m := testManager(t)

	mock.ExpectCall(&tg.ContactsSearchRequest{
		Q:     "q",
		Limit: 10,
	}).ThenRPCErr(getTestError())
	_, err := m.Search(ctx, "q")
	a.Error(err)

	mock.ExpectCall(&tg.ContactsSearchRequest{
		Q:     "q",
		Limit: 10,
	}).ThenResult(&tg.ContactsFound{
		MyResults: []tg.PeerClass{&tg.PeerUser{UserID: getTestUser().GetID()}},
		Results:   []tg.PeerClass{&tg.PeerChat{ChatID: getTestChat().GetID()}},
		Chats: []tg.ChatClass{
			getTestChat(),
		},
		Users: []tg.UserClass{
			getTestUser(),
		},
	})
	r, err := m.Search(ctx, "q")
	a.NoError(err)

	a.Len(r.MyResults, 1)
	a.Equal(getTestUser().GetID(), r.MyResults[0].ID())

	a.Len(r.Results, 1)
	a.Equal(getTestChat().GetID(), r.Results[0].ID())
}
