2023-11-23 21:11:18 +00:00
package rarible
import (
"encoding/json"
"math/big"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/status-im/status-go/services/wallet/bigint"
2024-02-06 15:27:15 +00:00
w_common "github.com/status-im/status-go/services/wallet/common"
2023-11-23 21:11:18 +00:00
"github.com/status-im/status-go/services/wallet/thirdparty"
"github.com/stretchr/testify/assert"
)
func TestUnmarshallCollection ( t * testing . T ) {
expectedCollectionData := thirdparty . CollectionData {
ID : thirdparty . ContractID {
ChainID : 1 ,
Address : common . HexToAddress ( "0x06012c8cf97bead5deae237070f9587f8e7a266d" ) ,
} ,
2024-02-06 15:27:15 +00:00
ContractType : w_common . ContractTypeERC721 ,
Provider : "rarible" ,
Name : "CryptoKitties" ,
ImageURL : "https://i.seadn.io/gae/C272ZRW1RGGef9vKMePFSCeKc1Lw6U40wl9ofNVxzUxFdj84hH9xJRQNf-7wgs7W8qw8RWe-1ybKp-VKuU5D-tg?w=500&auto=format" ,
Traits : make ( map [ string ] thirdparty . CollectionTrait ) ,
2024-05-14 06:58:08 +00:00
Socials : nil ,
2023-11-23 21:11:18 +00:00
}
collection := Collection { }
err := json . Unmarshal ( [ ] byte ( collectionJSON ) , & collection )
assert . NoError ( t , err )
contractID , err := raribleContractIDToUniqueID ( collection . ID , true )
assert . NoError ( t , err )
collectionData := collection . toCommon ( contractID )
assert . Equal ( t , expectedCollectionData , collectionData )
}
func TestUnmarshallOwnedCollectibles ( t * testing . T ) {
expectedTokenID0 , _ := big . NewInt ( 0 ) . SetString ( "32292934596187112148346015918544186536963932779440027682601542850818403729416" , 10 )
expectedTokenID1 , _ := big . NewInt ( 0 ) . SetString ( "32292934596187112148346015918544186536963932779440027682601542850818403729414" , 10 )
expectedCollectiblesData := [ ] thirdparty . FullCollectibleData {
{
CollectibleData : thirdparty . CollectibleData {
ID : thirdparty . CollectibleUniqueID {
ContractID : thirdparty . ContractID {
ChainID : 1 ,
Address : common . HexToAddress ( "0xb66a603f4cfe17e3d27b87a8bfcad319856518b8" ) ,
} ,
TokenID : & bigint . BigInt {
Int : expectedTokenID0 ,
} ,
} ,
2024-02-06 15:27:15 +00:00
ContractType : w_common . ContractTypeUnknown ,
2023-11-23 21:11:18 +00:00
Provider : "rarible" ,
Name : "Rariversary #002" ,
Description : "Today marks your Second Rariversary! Can you believe it’ s already been two years? Time flies when you’ re having fun! Thank you for everything you contribute!" ,
Permalink : "https://rarible.com/token/0xb66a603f4cfe17e3d27b87a8bfcad319856518b8:32292934596187112148346015918544186536963932779440027682601542850818403729416" ,
ImageURL : "https://lh3.googleusercontent.com/03DCIWuHtWUG5zIPAkdBjPAucg-BNu-917hsY1LRyEtG9pMcYSwIv5n_jZoK4bvMjNbw9MEC3AZA29kje83fCf2XwG6WegOv0JU=s1000" ,
AnimationURL : "https://ipfs.raribleuserdata.com/ipfs/bafybeibpqyrvdkw7ypajsmsvjiz2mhytv7fyyfa6n35tfui7e473dxnyom/image.png" ,
Traits : [ ] thirdparty . CollectibleTrait {
{
TraitType : "Theme" ,
Value : "Luv U" ,
} ,
{
TraitType : "Gift for" ,
Value : "Rariversary" ,
} ,
{
TraitType : "Year" ,
Value : "2" ,
} ,
} ,
TokenURI : "ipfs://ipfs/bafkreialxjfvfkn43jluxmilfg3d3ojnomtqg634nuowqq2syx4odqrx5m" ,
} ,
} ,
{
CollectibleData : thirdparty . CollectibleData {
ID : thirdparty . CollectibleUniqueID {
ContractID : thirdparty . ContractID {
ChainID : 1 ,
Address : common . HexToAddress ( "0xb66a603f4cfe17e3d27b87a8bfcad319856518b8" ) ,
} ,
TokenID : & bigint . BigInt {
Int : expectedTokenID1 ,
} ,
} ,
2024-02-06 15:27:15 +00:00
ContractType : w_common . ContractTypeUnknown ,
2023-11-23 21:11:18 +00:00
Provider : "rarible" ,
Name : "Rariversary #003" ,
Description : "Today marks your Third Rariversary! Can you believe it’ s already been three years? Time flies when you’ re having fun! We’ ve loved working with you these years and can’ t wait to see what the next few years bring. Thank you for everything you contribute!" ,
Permalink : "https://rarible.com/token/0xb66a603f4cfe17e3d27b87a8bfcad319856518b8:32292934596187112148346015918544186536963932779440027682601542850818403729414" ,
ImageURL : "https://lh3.googleusercontent.com/SimzYIBjaTFt3BTBXFGOOvAqfw_etV0Pbe2pen-IvwF7L8DOysNca7qBdj3Dt5n_HWsse5vDLD7FZ7o5XdEivRvBtUybI1mXZEBQ=s1000" ,
AnimationURL : "https://ipfs.raribleuserdata.com/ipfs/bafybeicsr36faeleunc5pzkqyf57pwm66vir4xhdkvv6cnkkznoyewqt7u/image.png" ,
Traits : [ ] thirdparty . CollectibleTrait {
{
TraitType : "Theme" ,
Value : "LFG" ,
} ,
{
TraitType : "Gift for" ,
Value : "Rariversary" ,
} ,
{
TraitType : "Year" ,
Value : "3" ,
} ,
} ,
TokenURI : "ipfs://ipfs/bafkreifeaueluerp33pjevz56f3ioxv63z73zuvm4wku5k6sobvala4phe" ,
} ,
} ,
}
var container CollectiblesContainer
err := json . Unmarshal ( [ ] byte ( ownedCollectiblesJSON ) , & container )
assert . NoError ( t , err )
collectiblesData := raribleToCollectiblesData ( container . Collectibles , true )
assert . Equal ( t , expectedCollectiblesData , collectiblesData )
}