77 lines
2.3 KiB
Go

package client
import (
"context"
"sort"
"testing"
"time"
"github.com/status-im/status-console-client/protocol/v1"
"github.com/stretchr/testify/require"
)
type requestsMock struct {
requests []protocol.RequestOptions
}
func (proto *requestsMock) Send(ctx context.Context, data []byte, options protocol.SendOptions) ([]byte, error) {
return nil, nil
}
func (proto *requestsMock) Subscribe(ctx context.Context, messages chan<- *protocol.Message, options protocol.SubscribeOptions) (*protocol.Subscription, error) {
return nil, nil
}
func (proto *requestsMock) Request(ctx context.Context, params protocol.RequestOptions) error {
proto.requests = append(proto.requests, params)
return nil
}
func TestRequestHistoryOneRequest(t *testing.T) {
db, err := InitializeTmpDB()
require.NoError(t, err)
defer db.Close()
proto := &requestsMock{}
m := NewMessengerV2(nil, proto, db)
require.NoError(t, db.SaveContacts([]Contact{
{Name: "first", Type: ContactPublicRoom},
{Name: "second", Type: ContactPublicRoom}}))
require.NoError(t, m.RequestAll(context.TODO(), true))
require.Len(t, proto.requests, 1)
histories, err := db.Histories()
require.NoError(t, err)
require.Len(t, histories, 2)
require.Equal(t, histories[0].Synced, proto.requests[0].To)
require.Equal(t, histories[1].Synced, proto.requests[0].To)
}
func TestRequestHistoryTwoRequest(t *testing.T) {
db, err := InitializeTmpDB()
require.NoError(t, err)
defer db.Close()
proto := &requestsMock{}
m := NewMessengerV2(nil, proto, db)
contacts := []Contact{
{Name: "first", Type: ContactPublicRoom, Topic: "first"},
{Name: "second", Type: ContactPublicRoom, Topic: "second"},
{Name: "third", Type: ContactPublicRoom, Topic: "third"},
}
require.NoError(t, db.SaveContacts(contacts))
histories := []History{{Synced: time.Now().Add(-time.Hour).Unix(), Contact: contacts[0]}}
require.NoError(t, db.UpdateHistories(histories))
require.NoError(t, m.RequestAll(context.TODO(), true))
require.Len(t, proto.requests, 2)
sort.Slice(proto.requests, func(i, j int) bool {
return proto.requests[i].From < proto.requests[j].From
})
require.Len(t, proto.requests[0].Chats, 2)
require.Len(t, proto.requests[1].Chats, 1)
require.Equal(t, histories[0].Contact.Name, proto.requests[1].Chats[0].ChatName)
require.Equal(t, histories[0].Synced, proto.requests[1].From)
}