Files
2020-03-25 13:49:36 +09:00

62 lines
2.5 KiB
JavaScript

import chai from 'chai'
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)
const { expect, assert } = chai
const MyNFT = artifacts.require("MyNFT");
contract('Test MyNFT contract', function(accounts) {
let token;
const name = "MyKlay"
const symbol = "MKlay"
const account1 = accounts[1]
const tokenId1 = 1111;
const tokenUri1 = "This is data for the token 1"; // Does not have to be unique
const account2 = accounts[2]
const tokenId2 = 2222;
const tokenUri2 = "This is data for the token 2"; // Does not have to be unique
const account3 = accounts[3]
it(' deploy and mint ERC721 token', async () => {
token = await MyNFT.new(name, symbol)
await token.registerUniqueToken(account1, tokenId1, tokenUri1, {from: accounts[0]})
expect(await token.symbol()).to.equal(symbol)
expect(await token.name()).to.equal(name)
})
it(' check unique id', async () => {
const duplicateTokenID = token.registerUniqueToken(account2, tokenId1, tokenUri2, {from: accounts[0]}) //tokenId
expect(duplicateTokenID).to.be.rejectedWith(/VM Exception while processing transaction: revert/)
})
it(' create multiple unique tokens and manage ownership', async () => {
const additionalToken = await token.registerUniqueToken(account2, tokenId2, tokenUri2, {from: accounts[0]})
expect(Number(await token.totalSupply())).to.equal(2)
expect(await token.exists(tokenId1)).to.be.true
expect(await token.exists(tokenId2)).to.be.true
expect(await token.ownerOf(tokenId1)).to.equal(account1)
expect(await token.ownerOf(tokenId2)).to.equal(account2)
})
it(' safe transfer', async () => {
const unownedTokenId = token.safeTransferFrom(account2, account3, tokenId1, {from: accounts[2]}) // tokenId
expect(unownedTokenId).to.be.rejectedWith(/VM Exception while processing transaction: revert/)
const wrongOwner = token.safeTransferFrom(account1, account3, tokenId2, {from: accounts[1]}) // wrong owner
expect(wrongOwner).to.be.rejectedWith(/VM Exception while processing transaction: revert/)
const wrongFromGas = token.safeTransferFrom(account2, account3, tokenId2, {from: accounts[1]}) // wrong owner
expect(wrongFromGas).to.be.rejectedWith(/VM Exception while processing transaction: revert/)
await token.safeTransferFrom(account2, account3, tokenId2, {from: accounts[2]})
expect(await token.ownerOf(tokenId2)).to.equal(account3)
})
})