From 7279fc7aef8905f04a4ef551e66bff80a1d02f35 Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Wed, 29 Aug 2018 06:23:55 +0000 Subject: [PATCH 1/3] Add the missing test for ERC721Holder --- test/token/ERC721/ERC721BasicToken.test.js | 2 ++ test/token/ERC721/ERC721Holder.behavior.js | 25 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/token/ERC721/ERC721Holder.behavior.js diff --git a/test/token/ERC721/ERC721BasicToken.test.js b/test/token/ERC721/ERC721BasicToken.test.js index 4525c7dc57d..b14f9f1c58d 100644 --- a/test/token/ERC721/ERC721BasicToken.test.js +++ b/test/token/ERC721/ERC721BasicToken.test.js @@ -1,5 +1,6 @@ const { shouldBehaveLikeERC721BasicToken } = require('./ERC721BasicToken.behavior'); const { shouldBehaveLikeMintAndBurnERC721Token } = require('./ERC721MintBurn.behavior'); +const { shouldBehaveLikeERC721Holder } = require('./ERC721Holder.behavior'); const BigNumber = web3.BigNumber; const ERC721BasicToken = artifacts.require('ERC721BasicTokenMock.sol'); @@ -15,4 +16,5 @@ contract('ERC721BasicToken', function (accounts) { shouldBehaveLikeERC721BasicToken(accounts); shouldBehaveLikeMintAndBurnERC721Token(accounts); + shouldBehaveLikeERC721Holder(accounts); }); diff --git a/test/token/ERC721/ERC721Holder.behavior.js b/test/token/ERC721/ERC721Holder.behavior.js new file mode 100644 index 00000000000..198501e6263 --- /dev/null +++ b/test/token/ERC721/ERC721Holder.behavior.js @@ -0,0 +1,25 @@ +const ERC721Holder = artifacts.require('ERC721Holder.sol'); + +require('chai') + .should(); + +function shouldBehaveLikeERC721Holder (accounts) { + const tokenId = 1; + const creator = accounts[0]; + + describe('like an ERC721Holder', function () { + it.only('safe transfers to a holder contract', async function () { + await this.token.mint(creator, tokenId, { from: creator }); + receiver = await ERC721Holder.new(); + await this.token.approve(receiver.address, tokenId, { from: creator }); + + await this.token.safeTransferFrom(creator, receiver.address, tokenId); + + (await this.token.ownerOf(tokenId)).should.be.equal(receiver.address); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC721Holder, +}; From 1ccfba9597f39df3b44420cf2a35e6a463ce1542 Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Wed, 29 Aug 2018 06:26:09 +0000 Subject: [PATCH 2/3] fix lint --- test/token/ERC721/ERC721Holder.behavior.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/token/ERC721/ERC721Holder.behavior.js b/test/token/ERC721/ERC721Holder.behavior.js index 198501e6263..289f7ea016a 100644 --- a/test/token/ERC721/ERC721Holder.behavior.js +++ b/test/token/ERC721/ERC721Holder.behavior.js @@ -8,9 +8,9 @@ function shouldBehaveLikeERC721Holder (accounts) { const creator = accounts[0]; describe('like an ERC721Holder', function () { - it.only('safe transfers to a holder contract', async function () { + it('safe transfers to a holder contract', async function () { await this.token.mint(creator, tokenId, { from: creator }); - receiver = await ERC721Holder.new(); + const receiver = await ERC721Holder.new(); await this.token.approve(receiver.address, tokenId, { from: creator }); await this.token.safeTransferFrom(creator, receiver.address, tokenId); From 9ade13ab6d56451db052624741691e40157e1719 Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Wed, 26 Sep 2018 03:48:00 +0000 Subject: [PATCH 3/3] Move the holder test to a separate file --- test/token/ERC721/ERC721Holder.behavior.js | 25 ---------------------- test/token/ERC721/ERC721Holder.test.js | 19 ++++++++++++++++ 2 files changed, 19 insertions(+), 25 deletions(-) delete mode 100644 test/token/ERC721/ERC721Holder.behavior.js create mode 100644 test/token/ERC721/ERC721Holder.test.js diff --git a/test/token/ERC721/ERC721Holder.behavior.js b/test/token/ERC721/ERC721Holder.behavior.js deleted file mode 100644 index 289f7ea016a..00000000000 --- a/test/token/ERC721/ERC721Holder.behavior.js +++ /dev/null @@ -1,25 +0,0 @@ -const ERC721Holder = artifacts.require('ERC721Holder.sol'); - -require('chai') - .should(); - -function shouldBehaveLikeERC721Holder (accounts) { - const tokenId = 1; - const creator = accounts[0]; - - describe('like an ERC721Holder', function () { - it('safe transfers to a holder contract', async function () { - await this.token.mint(creator, tokenId, { from: creator }); - const receiver = await ERC721Holder.new(); - await this.token.approve(receiver.address, tokenId, { from: creator }); - - await this.token.safeTransferFrom(creator, receiver.address, tokenId); - - (await this.token.ownerOf(tokenId)).should.be.equal(receiver.address); - }); - }); -} - -module.exports = { - shouldBehaveLikeERC721Holder, -}; diff --git a/test/token/ERC721/ERC721Holder.test.js b/test/token/ERC721/ERC721Holder.test.js new file mode 100644 index 00000000000..9f6eb856a13 --- /dev/null +++ b/test/token/ERC721/ERC721Holder.test.js @@ -0,0 +1,19 @@ +const ERC721Holder = artifacts.require('ERC721Holder.sol'); +const ERC721Mintable = artifacts.require('ERC721MintableBurnableImpl.sol'); + +require('chai') + .should(); + +contract('ERC721Holder', function ([creator]) { + it('receives an ERC721 token', async function () { + const token = await ERC721Mintable.new({ from: creator }); + const tokenId = 1; + await token.mint(creator, tokenId, { from: creator }); + + const receiver = await ERC721Holder.new(); + await token.approve(receiver.address, tokenId, { from: creator }); + await token.safeTransferFrom(creator, receiver.address, tokenId); + + (await token.ownerOf(tokenId)).should.be.equal(receiver.address); + }); +});