@ -72,8 +72,6 @@ contract('ERC721Full', function ([
} ) ;
describe ( 'metadata' , function ( ) {
const sampleUri = 'mock://mytoken' ;
it ( 'has a name' , async function ( ) {
expect ( await this . token . name ( ) ) . to . be . equal ( name ) ;
} ) ;
@ -82,31 +80,68 @@ contract('ERC721Full', function ([
expect ( await this . token . symbol ( ) ) . to . be . equal ( symbol ) ;
} ) ;
it ( 'sets and returns metadata for a token id' , async function ( ) {
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( sampleUri ) ;
} ) ;
describe ( 'token URI' , function ( ) {
const baseURI = 'https://api.com/v1/' ;
const sampleUri = 'mock://mytoken' ;
it ( 'reverts when setting metadata for non existent token id' , async function ( ) {
await expectRevert (
this . token . setTokenURI ( nonExistentTokenId , sampleUri ) , 'ERC721Metadata: URI set of nonexistent token'
) ;
} ) ;
it ( 'it is empty by default' , async function ( ) {
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( '' ) ;
} ) ;
it ( 'can burn token with metadata ' , async function ( ) {
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
await this . token . burn ( firstTokenId , { from : owner } ) ;
expect ( await this . token . exists ( firstTokenId ) ) . to . equal ( false ) ;
} ) ;
it ( 'reverts when queried for non existent token id' , async function ( ) {
await expectRevert (
this . token . tokenURI ( nonExistentTokenId ) , 'ERC721Metadata: URI query for nonexistent token'
) ;
} ) ;
it ( 'returns empty metadata for token' , async function ( ) {
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( '' ) ;
} ) ;
it ( 'can be set for a token id' , async function ( ) {
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( sampleUri ) ;
} ) ;
it ( 'reverts when querying metadata for non existent token id' , async function ( ) {
await expectRevert (
this . token . tokenURI ( nonExistentTokenId ) , 'ERC721Metadata: URI query for nonexistent token'
) ;
it ( 'reverts when setting for non existent token id' , async function ( ) {
await expectRevert (
this . token . setTokenURI ( nonExistentTokenId , sampleUri ) , 'ERC721Metadata: URI set of nonexistent token'
) ;
} ) ;
it ( 'base URI can be set' , async function ( ) {
await this . token . setBaseURI ( baseURI ) ;
expect ( await this . token . baseURI ( ) ) . to . equal ( baseURI ) ;
} ) ;
it ( 'base URI is added as a prefix to the token URI' , async function ( ) {
await this . token . setBaseURI ( baseURI ) ;
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( baseURI + sampleUri ) ;
} ) ;
it ( 'token URI can be changed by changing the base URI' , async function ( ) {
await this . token . setBaseURI ( baseURI ) ;
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
const newBaseURI = 'https://api.com/v2/' ;
await this . token . setBaseURI ( newBaseURI ) ;
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( newBaseURI + sampleUri ) ;
} ) ;
it ( 'token URI is empty for tokens with no URI but with base URI' , async function ( ) {
await this . token . setBaseURI ( baseURI ) ;
expect ( await this . token . tokenURI ( firstTokenId ) ) . to . be . equal ( '' ) ;
} ) ;
it ( 'tokens with URI can be burnt ' , async function ( ) {
await this . token . setTokenURI ( firstTokenId , sampleUri ) ;
await this . token . burn ( firstTokenId , { from : owner } ) ;
expect ( await this . token . exists ( firstTokenId ) ) . to . equal ( false ) ;
await expectRevert (
this . token . tokenURI ( firstTokenId ) , 'ERC721Metadata: URI query for nonexistent token'
) ;
} ) ;
} ) ;
} ) ;