mirror of
https://github.com/status-im/status-console-client.git
synced 2025-02-25 17:15:14 +00:00
77 lines
2.3 KiB
Go
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)
|
|
|
|
}
|