github.com/status-im/status-go@v1.1.0/services/wallet/community/database_test.go (about) 1 package community 2 3 import ( 4 "testing" 5 6 "github.com/status-im/status-go/services/wallet/thirdparty" 7 "github.com/status-im/status-go/t/helpers" 8 "github.com/status-im/status-go/walletdatabase" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func setupCommunityDataDBTest(t *testing.T) (*DataDB, func()) { 14 db, err := helpers.SetupTestMemorySQLDB(walletdatabase.DbInitializer{}) 15 require.NoError(t, err) 16 return NewDataDB(db), func() { 17 require.NoError(t, db.Close()) 18 } 19 } 20 21 func TestUpdateCommunityInfo(t *testing.T) { 22 db, cleanup := setupCommunityDataDBTest(t) 23 defer cleanup() 24 25 communityData := thirdparty.GenerateTestCommunityInfo(10) 26 extraCommunityID := "extra-community-id" 27 28 for communityID, communityInfo := range communityData { 29 communityInfo := communityInfo // Prevent lint warning G601: Implicit memory aliasing in for loop. 30 err := db.SetCommunityInfo(communityID, &communityInfo) 31 require.NoError(t, err) 32 } 33 err := db.SetCommunityInfo(extraCommunityID, nil) 34 require.NoError(t, err) 35 36 for communityID, communityInfo := range communityData { 37 info, state, err := db.GetCommunityInfo(communityID) 38 require.NoError(t, err) 39 require.Equal(t, communityInfo, *info) 40 require.True(t, state.LastUpdateSuccesful) 41 } 42 info, state, err := db.GetCommunityInfo(extraCommunityID) 43 require.NoError(t, err) 44 require.Empty(t, info) 45 require.False(t, state.LastUpdateSuccesful) 46 47 randomCommunityID := "random-community-id" 48 info, state, err = db.GetCommunityInfo(randomCommunityID) 49 require.NoError(t, err) 50 require.Empty(t, info) 51 require.Empty(t, state) 52 }