github.com/status-im/status-go@v1.1.0/services/wallet/thirdparty/test_utils.go (about)

     1  package thirdparty
     2  
     3  import (
     4  	"fmt"
     5  	"math/big"
     6  	"math/rand"
     7  
     8  	"github.com/ethereum/go-ethereum/common"
     9  	"github.com/status-im/status-go/protocol/communities/token"
    10  	"github.com/status-im/status-go/services/wallet/bigint"
    11  	w_common "github.com/status-im/status-go/services/wallet/common"
    12  )
    13  
    14  func generateContractType(seed int) w_common.ContractType {
    15  	if seed%2 == 0 {
    16  		return w_common.ContractTypeERC721
    17  	}
    18  	return w_common.ContractTypeERC1155
    19  }
    20  
    21  func GenerateTestCollectiblesData(count int) (result []CollectibleData) {
    22  	base := rand.Intn(100) // nolint: gosec
    23  
    24  	result = make([]CollectibleData, 0, count)
    25  	for i := base; i < count+base; i++ {
    26  		bigI := big.NewInt(int64(i))
    27  		newCollectible := CollectibleData{
    28  			ID: CollectibleUniqueID{
    29  				ContractID: ContractID{
    30  					ChainID: w_common.ChainID(i % 4),
    31  					Address: common.BigToAddress(bigI),
    32  				},
    33  				TokenID: &bigint.BigInt{Int: bigI},
    34  			},
    35  			ContractType:       generateContractType(i),
    36  			Provider:           fmt.Sprintf("provider-%d", i),
    37  			Name:               fmt.Sprintf("name-%d", i),
    38  			Description:        fmt.Sprintf("description-%d", i),
    39  			Permalink:          fmt.Sprintf("permalink-%d", i),
    40  			ImageURL:           fmt.Sprintf("imageurl-%d", i),
    41  			ImagePayload:       []byte(fmt.Sprintf("imagepayload-%d", i)),
    42  			AnimationURL:       fmt.Sprintf("animationurl-%d", i),
    43  			AnimationMediaType: fmt.Sprintf("animationmediatype-%d", i),
    44  			Traits: []CollectibleTrait{
    45  				{
    46  					TraitType:   fmt.Sprintf("traittype-%d", i),
    47  					Value:       fmt.Sprintf("traitvalue-%d", i),
    48  					DisplayType: fmt.Sprintf("displaytype-%d", i),
    49  					MaxValue:    fmt.Sprintf("maxvalue-%d", i),
    50  				},
    51  				{
    52  					TraitType:   fmt.Sprintf("traittype-%d", i),
    53  					Value:       fmt.Sprintf("traitvalue-%d", i),
    54  					DisplayType: fmt.Sprintf("displaytype-%d", i),
    55  					MaxValue:    fmt.Sprintf("maxvalue-%d", i),
    56  				},
    57  				{
    58  					TraitType:   fmt.Sprintf("traittype-%d", i),
    59  					Value:       fmt.Sprintf("traitvalue-%d", i),
    60  					DisplayType: fmt.Sprintf("displaytype-%d", i),
    61  					MaxValue:    fmt.Sprintf("maxvalue-%d", i),
    62  				},
    63  			},
    64  			BackgroundColor: fmt.Sprintf("backgroundcolor-%d", i),
    65  			TokenURI:        fmt.Sprintf("tokenuri-%d", i),
    66  			CommunityID:     fmt.Sprintf("communityid-%d", i%5),
    67  		}
    68  		result = append(result, newCollectible)
    69  	}
    70  	return result
    71  }
    72  
    73  func GenerateTestCollectiblesCommunityData(count int) []CollectibleCommunityInfo {
    74  	base := rand.Intn(100) // nolint: gosec
    75  
    76  	result := make([]CollectibleCommunityInfo, 0, count)
    77  	for i := base; i < count+base; i++ {
    78  		newCommunityInfo := CollectibleCommunityInfo{
    79  			PrivilegesLevel: token.PrivilegesLevel(i) % (token.CommunityLevel + 1),
    80  		}
    81  		result = append(result, newCommunityInfo)
    82  	}
    83  	return result
    84  }
    85  
    86  func GenerateTestCollectiblesOwnership(count int) []AccountBalance {
    87  	base := rand.Intn(100) // nolint: gosec
    88  
    89  	ret := make([]AccountBalance, 0, count)
    90  	for i := base; i < count+base; i++ {
    91  		ret = append(ret, AccountBalance{
    92  			Address: common.HexToAddress(fmt.Sprintf("0x%x", i)),
    93  			Balance: &bigint.BigInt{Int: big.NewInt(int64(i))},
    94  		})
    95  	}
    96  	return ret
    97  }
    98  
    99  func GenerateTestCollectionsData(count int) (result []CollectionData) {
   100  	base := rand.Intn(100) // nolint: gosec
   101  
   102  	result = make([]CollectionData, 0, count)
   103  	for i := base; i < count+base; i++ {
   104  		bigI := big.NewInt(int64(count))
   105  		traits := make(map[string]CollectionTrait)
   106  		for j := 0; j < 3; j++ {
   107  			traits[fmt.Sprintf("traittype-%d", j)] = CollectionTrait{
   108  				Min: float64(i+j) / 2,
   109  				Max: float64(i+j) * 2,
   110  			}
   111  		}
   112  
   113  		newCollection := CollectionData{
   114  			ID: ContractID{
   115  				ChainID: w_common.ChainID(i),
   116  				Address: common.BigToAddress(bigI),
   117  			},
   118  			ContractType: generateContractType(i),
   119  			Provider:     fmt.Sprintf("provider-%d", i),
   120  			Name:         fmt.Sprintf("name-%d", i),
   121  			Slug:         fmt.Sprintf("slug-%d", i),
   122  			ImageURL:     fmt.Sprintf("imageurl-%d", i),
   123  			ImagePayload: []byte(fmt.Sprintf("imagepayload-%d", i)),
   124  			Traits:       traits,
   125  			CommunityID:  fmt.Sprintf("community-%d", i),
   126  			Socials:      nil,
   127  		}
   128  		result = append(result, newCollection)
   129  	}
   130  	return result
   131  }
   132  
   133  func GenerateTestCommunityInfo(count int) map[string]CommunityInfo {
   134  	base := rand.Intn(100) // nolint: gosec
   135  
   136  	result := make(map[string]CommunityInfo)
   137  	for i := base; i < count+base; i++ {
   138  		communityID := fmt.Sprintf("communityid-%d", i)
   139  		newCommunity := CommunityInfo{
   140  			CommunityName:         fmt.Sprintf("communityname-%d", i),
   141  			CommunityColor:        fmt.Sprintf("communitycolor-%d", i),
   142  			CommunityImage:        fmt.Sprintf("communityimage-%d", i),
   143  			CommunityImagePayload: []byte(fmt.Sprintf("communityimagepayload-%d", i)),
   144  		}
   145  		result[communityID] = newCommunity
   146  	}
   147  
   148  	return result
   149  }
   150  
   151  func GenerateTestFullCollectiblesData(count int) []FullCollectibleData {
   152  	collectiblesData := GenerateTestCollectiblesData(count)
   153  	collectionsData := GenerateTestCollectionsData(count)
   154  	communityInfoMap := GenerateTestCommunityInfo(count)
   155  	communityInfo := make([]CommunityInfo, 0, count)
   156  	for _, info := range communityInfoMap {
   157  		communityInfo = append(communityInfo, info)
   158  	}
   159  	communityData := GenerateTestCollectiblesCommunityData(count)
   160  
   161  	ret := make([]FullCollectibleData, 0, count)
   162  	for i := 0; i < count; i++ {
   163  		// Ensure consistent ContracType
   164  		collectionsData[i].ContractType = collectiblesData[i].ContractType
   165  
   166  		ret = append(ret, FullCollectibleData{
   167  			CollectibleData:          collectiblesData[i],
   168  			CollectionData:           &collectionsData[i],
   169  			CommunityInfo:            &communityInfo[i],
   170  			CollectibleCommunityInfo: &communityData[i],
   171  			Ownership:                GenerateTestCollectiblesOwnership(rand.Intn(5) + 1), // nolint: gosec
   172  		})
   173  	}
   174  	return ret
   175  }