Search Apps Documentation Source Content File Folder Download Copy

grc721_metadata_test.gno

3.03 Kb ยท 107 lines
  1package grc721
  2
  3import (
  4	"std"
  5	"testing"
  6
  7	"gno.land/p/demo/testutils"
  8	"gno.land/p/demo/uassert"
  9)
 10
 11func TestSetMetadata(t *testing.T) {
 12	// Create a new dummy NFT with metadata
 13	dummy := NewNFTWithMetadata(dummyNFTName, dummyNFTSymbol)
 14	if dummy == nil {
 15		t.Errorf("should not be nil")
 16	}
 17
 18	// Define addresses for testing purposes
 19	addr1 := testutils.TestAddress("alice")
 20	addr2 := testutils.TestAddress("bob")
 21
 22	// Define metadata attributes
 23	name := "test"
 24	description := "test"
 25	image := "test"
 26	imageData := "test"
 27	externalURL := "test"
 28	attributes := []Trait{}
 29	backgroundColor := "test"
 30	animationURL := "test"
 31	youtubeURL := "test"
 32
 33	// Set the original caller to addr1
 34	std.TestSetOrigCaller(addr1) // addr1
 35
 36	// Mint a new token for addr1
 37	dummy.mint(addr1, TokenID("1"))
 38
 39	// Set metadata for token 1
 40	derr := dummy.SetTokenMetadata(TokenID("1"), Metadata{
 41		Name:            name,
 42		Description:     description,
 43		Image:           image,
 44		ImageData:       imageData,
 45		ExternalURL:     externalURL,
 46		Attributes:      attributes,
 47		BackgroundColor: backgroundColor,
 48		AnimationURL:    animationURL,
 49		YoutubeURL:      youtubeURL,
 50	})
 51
 52	// Check if there was an error setting metadata
 53	uassert.NoError(t, derr, "Should not result in error")
 54
 55	// Test case: Invalid token ID
 56	err := dummy.SetTokenMetadata(TokenID("3"), Metadata{
 57		Name:            name,
 58		Description:     description,
 59		Image:           image,
 60		ImageData:       imageData,
 61		ExternalURL:     externalURL,
 62		Attributes:      attributes,
 63		BackgroundColor: backgroundColor,
 64		AnimationURL:    animationURL,
 65		YoutubeURL:      youtubeURL,
 66	})
 67
 68	// Check if the error returned matches the expected error
 69	uassert.ErrorIs(t, err, ErrInvalidTokenId)
 70
 71	// Set the original caller to addr2
 72	std.TestSetOrigCaller(addr2) // addr2
 73
 74	// Try to set metadata for token 1 from addr2 (should fail)
 75	cerr := dummy.SetTokenMetadata(TokenID("1"), Metadata{
 76		Name:            name,
 77		Description:     description,
 78		Image:           image,
 79		ImageData:       imageData,
 80		ExternalURL:     externalURL,
 81		Attributes:      attributes,
 82		BackgroundColor: backgroundColor,
 83		AnimationURL:    animationURL,
 84		YoutubeURL:      youtubeURL,
 85	})
 86
 87	// Check if the error returned matches the expected error
 88	uassert.ErrorIs(t, cerr, ErrCallerIsNotOwner)
 89
 90	// Set the original caller back to addr1
 91	std.TestSetOrigCaller(addr1) // addr1
 92
 93	// Retrieve metadata for token 1
 94	dummyMetadata, err := dummy.TokenMetadata(TokenID("1"))
 95	uassert.NoError(t, err, "Metadata error")
 96
 97	// Check if metadata attributes match expected values
 98	uassert.Equal(t, image, dummyMetadata.Image)
 99	uassert.Equal(t, imageData, dummyMetadata.ImageData)
100	uassert.Equal(t, externalURL, dummyMetadata.ExternalURL)
101	uassert.Equal(t, description, dummyMetadata.Description)
102	uassert.Equal(t, name, dummyMetadata.Name)
103	uassert.Equal(t, len(attributes), len(dummyMetadata.Attributes))
104	uassert.Equal(t, backgroundColor, dummyMetadata.BackgroundColor)
105	uassert.Equal(t, animationURL, dummyMetadata.AnimationURL)
106	uassert.Equal(t, youtubeURL, dummyMetadata.YoutubeURL)
107}