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 }