github.com/status-im/status-go@v1.1.0/protocol/messenger_contacts_test.go (about)

     1  package protocol
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/suite"
     8  
     9  	"github.com/status-im/status-go/images"
    10  	"github.com/status-im/status-go/multiaccounts/accounts"
    11  	"github.com/status-im/status-go/multiaccounts/settings"
    12  )
    13  
    14  func TestMessengerContacts(t *testing.T) {
    15  	suite.Run(t, new(MessengerContactsTestSuite))
    16  }
    17  
    18  type MessengerContactsTestSuite struct {
    19  	MessengerBaseTestSuite
    20  }
    21  
    22  func (s *MessengerContactsTestSuite) Test_SelfContact() {
    23  	const timeout = 1 * time.Second
    24  
    25  	profileKp := accounts.GetProfileKeypairForTest(true, false, false)
    26  	profileKp.KeyUID = s.m.account.KeyUID
    27  	profileKp.Accounts[0].KeyUID = s.m.account.KeyUID
    28  
    29  	err := s.m.settings.SaveOrUpdateKeypair(profileKp)
    30  	s.Require().NoError(err)
    31  
    32  	// Create values
    33  
    34  	displayName := "DisplayName_1"
    35  	bio := "Bio_1"
    36  	ensName := "EnsName_1.eth"
    37  	identityImages := images.SampleIdentityImages()
    38  
    39  	identityImagesMap := make(map[string]images.IdentityImage)
    40  	for _, img := range identityImages {
    41  		img.KeyUID = s.m.account.KeyUID
    42  		identityImagesMap[img.Name] = img
    43  	}
    44  
    45  	// Set values stored in settings
    46  
    47  	changesLatch := SelfContactChangeEvent{}
    48  
    49  	setSettingsValues := func() {
    50  		err := s.m.SetDisplayName(displayName)
    51  		s.Require().NoError(err)
    52  
    53  		err = s.m.SetBio(bio)
    54  		s.Require().NoError(err)
    55  
    56  		err = s.m.settings.SaveSettingField(settings.PreferredName, ensName)
    57  		s.Require().NoError(err)
    58  	}
    59  
    60  	eventHandler := func(event *SelfContactChangeEvent) bool {
    61  		if event.DisplayNameChanged {
    62  			changesLatch.DisplayNameChanged = true
    63  		}
    64  		if event.BioChanged {
    65  			changesLatch.BioChanged = true
    66  		}
    67  		if event.PreferredNameChanged {
    68  			changesLatch.PreferredNameChanged = true
    69  		}
    70  		return changesLatch.DisplayNameChanged && changesLatch.BioChanged && changesLatch.PreferredNameChanged
    71  	}
    72  
    73  	SetSettingsAndWaitForChange(&s.Suite, s.m, timeout, setSettingsValues, eventHandler)
    74  
    75  	// Set values stored in multiaccounts
    76  
    77  	setIdentityImages := func() {
    78  		err := s.m.multiAccounts.StoreIdentityImages(s.m.account.KeyUID, identityImages, false)
    79  		s.Require().NoError(err)
    80  	}
    81  
    82  	SetIdentityImagesAndWaitForChange(&s.Suite, s.m, timeout, setIdentityImages)
    83  
    84  	// Check values
    85  
    86  	selfContact := s.m.GetContactByID(s.m.IdentityPublicKeyString())
    87  	s.Require().NotNil(selfContact)
    88  	s.Require().Equal(displayName, selfContact.DisplayName)
    89  	s.Require().Equal(bio, selfContact.Bio)
    90  	s.Require().Equal(ensName, selfContact.EnsName)
    91  	s.Require().Equal(identityImagesMap, selfContact.Images)
    92  }