some cleanup
This commit is contained in:
@@ -2,8 +2,6 @@ import {
|
||||
chaiSetup,
|
||||
constants,
|
||||
expectTransactionFailedAsync,
|
||||
expectTransactionFailedWithoutReasonAsync,
|
||||
LogDecoder,
|
||||
provider,
|
||||
txDefaults,
|
||||
web3Wrapper,
|
||||
@@ -20,9 +18,6 @@ import {
|
||||
DummyERC1155ReceiverContract,
|
||||
DummyERC1155ReceiverTokenReceivedEventArgs,
|
||||
DummyERC1155TokenContract,
|
||||
//DummyERC1155TokenTransferEventArgs,
|
||||
InvalidERC1155ReceiverContract,
|
||||
ERC1155TransferSingleEventArgs,
|
||||
DummyERC1155ReceiverBatchTokenReceivedEventArgs,
|
||||
} from '../src';
|
||||
|
||||
@@ -33,27 +28,20 @@ const expect = chai.expect;
|
||||
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
||||
// tslint:disable:no-unnecessary-type-assertion
|
||||
describe('ERC1155Token', () => {
|
||||
const DUMMY_FUNGIBLE_TOKEN_URI = 'FUN';
|
||||
const DUMMY_FUNGIBLE_TOKEN_IS_FUNGIBLE = false;
|
||||
const DUMMY_NONFUNGIBLE_TOKEN_URI = 'NOFUN';
|
||||
const DUMMY_NONFUNGIBLE_TOKEN_IS_FUNGIBLE = true;
|
||||
|
||||
let owner: string;
|
||||
let spender: string;
|
||||
const spenderInitialBalance = new BigNumber(500);
|
||||
const receiverInitialBalance = new BigNumber(0);
|
||||
let token: DummyERC1155TokenContract;
|
||||
let erc1155Receiver: DummyERC1155ReceiverContract;
|
||||
let invalidERC1155Receiver: InvalidERC1155ReceiverContract;
|
||||
let logDecoder: LogDecoder;
|
||||
let receiver: string;
|
||||
const tokenId = new BigNumber(1);
|
||||
let dummyNft: BigNumber;
|
||||
let nonFungibleToken: BigNumber;
|
||||
const nftOwnerBalance = new BigNumber(1);
|
||||
const nftNotOwnerBalance = new BigNumber(0);
|
||||
let erc1155Wrapper: Erc1155Wrapper;
|
||||
|
||||
let dummyFungibleTokenType: BigNumber;
|
||||
let dummyNonFungibleTokenType: BigNumber;
|
||||
let fungibleToken: BigNumber;
|
||||
|
||||
before(async () => {
|
||||
await blockchainLifecycle.startAsync();
|
||||
@@ -62,9 +50,9 @@ describe('ERC1155Token', () => {
|
||||
await blockchainLifecycle.revertAsync();
|
||||
});
|
||||
before(async () => {
|
||||
// deploy erc1155 contract & receiver
|
||||
const accounts = await web3Wrapper.getAvailableAddressesAsync();
|
||||
owner = accounts[0];
|
||||
spender = accounts[1];
|
||||
[owner, spender] = accounts;
|
||||
token = await DummyERC1155TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC1155Token,
|
||||
provider,
|
||||
@@ -77,10 +65,11 @@ describe('ERC1155Token', () => {
|
||||
provider,
|
||||
txDefaults,
|
||||
);
|
||||
receiver = erc1155Receiver.address;
|
||||
// create wrapper & mint erc1155 tokens
|
||||
erc1155Wrapper = new Erc1155Wrapper(token, provider, owner);
|
||||
dummyFungibleTokenType = await erc1155Wrapper.mintFungibleTokenAsync(spender, spenderInitialBalance);
|
||||
[dummyNonFungibleTokenType, dummyNft] = await erc1155Wrapper.mintNonFungibleTokenAsync(spender);
|
||||
fungibleToken = await erc1155Wrapper.mintFungibleTokenAsync(spender, spenderInitialBalance);
|
||||
[, nonFungibleToken] = await erc1155Wrapper.mintNonFungibleTokenAsync(spender);
|
||||
});
|
||||
beforeEach(async () => {
|
||||
await blockchainLifecycle.startAsync();
|
||||
@@ -91,13 +80,11 @@ describe('ERC1155Token', () => {
|
||||
describe('safeTransferFrom', () => {
|
||||
it('should transfer fungible token if called by token owner', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdx = 0;
|
||||
const toIdx = 1;
|
||||
const participatingOwners = [from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType];
|
||||
const participatingOwners = [spender, receiver];
|
||||
const participatingTokens = [fungibleToken, fungibleToken];
|
||||
const tokenTypesToTransfer = [fungibleToken];
|
||||
const valueToTransfer = new BigNumber(200);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
@@ -110,8 +97,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdx]).to.be.bignumber.equal(receiverInitialBalance);
|
||||
// execute transfer
|
||||
await erc1155Wrapper.safeTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer[0],
|
||||
valuesToTransfer[0],
|
||||
callbackData,
|
||||
@@ -130,13 +117,11 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should transfer non-fungible token if called by token owner', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdx = 0;
|
||||
const toIdx = 1;
|
||||
const participatingOwners = [from, to];
|
||||
const participatingTokens = [dummyNft, dummyNft];
|
||||
const tokenTypesToTransfer = [dummyNft];
|
||||
const participatingOwners = [spender, receiver];
|
||||
const participatingTokens = [nonFungibleToken, nonFungibleToken];
|
||||
const tokenTypesToTransfer = [nonFungibleToken];
|
||||
const valueToTransfer = new BigNumber(1);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
@@ -149,8 +134,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdx]).to.be.bignumber.equal(nftNotOwnerBalance);
|
||||
// execute transfer
|
||||
await erc1155Wrapper.safeTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer[0],
|
||||
valuesToTransfer[0],
|
||||
callbackData,
|
||||
@@ -165,15 +150,13 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should trigger callback if transferring to a contract', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdxFungible = 0;
|
||||
const toIdxFungible = 1;
|
||||
const fromIdxNonFungible = 2;
|
||||
const toIdxNonFungible = 3;
|
||||
const participatingOwners = [from, to, from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType, dummyNft, dummyNft];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType, dummyNft];
|
||||
const participatingOwners = [spender, receiver, spender, receiver];
|
||||
const participatingTokens = [fungibleToken, fungibleToken, nonFungibleToken, nonFungibleToken];
|
||||
const tokenTypesToTransfer = [fungibleToken, nonFungibleToken];
|
||||
const fungibleValueToTransfer = new BigNumber(200);
|
||||
const nonFungibleValueToTransfer = new BigNumber(1);
|
||||
const valuesToTransfer = [fungibleValueToTransfer, nonFungibleValueToTransfer];
|
||||
@@ -189,8 +172,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdxNonFungible]).to.be.bignumber.equal(nftNotOwnerBalance);
|
||||
// execute transfer
|
||||
const tx = await erc1155Wrapper.safeTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer[0],
|
||||
valuesToTransfer[0],
|
||||
callbackData,
|
||||
@@ -198,8 +181,8 @@ describe('ERC1155Token', () => {
|
||||
expect(tx.logs.length).to.be.equal(2);
|
||||
const receiverLog = tx.logs[1] as LogWithDecodedArgs<DummyERC1155ReceiverTokenReceivedEventArgs>;
|
||||
// check callback logs
|
||||
expect(receiverLog.args.operator).to.be.equal(from);
|
||||
expect(receiverLog.args.from).to.be.equal(from);
|
||||
expect(receiverLog.args.operator).to.be.equal(spender);
|
||||
expect(receiverLog.args.from).to.be.equal(spender);
|
||||
expect(receiverLog.args.tokenId).to.be.bignumber.equal(tokenTypesToTransfer[0]);
|
||||
expect(receiverLog.args.tokenValue).to.be.bignumber.equal(valuesToTransfer[0]);
|
||||
expect(receiverLog.args.data).to.be.deep.equal(callbackData);
|
||||
@@ -219,13 +202,11 @@ describe('ERC1155Token', () => {
|
||||
describe('batchSafeTransferFrom', () => {
|
||||
it('should transfer fungible tokens if called by token owner', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdx = 0;
|
||||
const toIdx = 1;
|
||||
const participatingOwners = [from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType];
|
||||
const participatingOwners = [spender, receiver];
|
||||
const participatingTokens = [fungibleToken, fungibleToken];
|
||||
const tokenTypesToTransfer = [fungibleToken];
|
||||
const valueToTransfer = new BigNumber(200);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
@@ -238,8 +219,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdx]).to.be.bignumber.equal(receiverInitialBalance);
|
||||
// execute transfer
|
||||
await erc1155Wrapper.safeBatchTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
@@ -258,13 +239,11 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should transfer non-fungible token if called by token owner', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdx = 0;
|
||||
const toIdx = 1;
|
||||
const participatingOwners = [from, to];
|
||||
const participatingTokens = [dummyNft, dummyNft];
|
||||
const tokenTypesToTransfer = [dummyNft];
|
||||
const participatingOwners = [spender, receiver];
|
||||
const participatingTokens = [nonFungibleToken, nonFungibleToken];
|
||||
const tokenTypesToTransfer = [nonFungibleToken];
|
||||
const valueToTransfer = new BigNumber(1);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
@@ -277,8 +256,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdx]).to.be.bignumber.equal(nftNotOwnerBalance);
|
||||
// execute transfer
|
||||
await erc1155Wrapper.safeBatchTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
@@ -293,15 +272,13 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should transfer mix of fungible / non-fungible tokens if called by token owner', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdxFungible = 0;
|
||||
const toIdxFungible = 1;
|
||||
const fromIdxNonFungible = 2;
|
||||
const toIdxNonFungible = 3;
|
||||
const participatingOwners = [from, to, from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType, dummyNft, dummyNft];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType, dummyNft];
|
||||
const participatingOwners = [spender, receiver, spender, receiver];
|
||||
const participatingTokens = [fungibleToken, fungibleToken, nonFungibleToken, nonFungibleToken];
|
||||
const tokenTypesToTransfer = [fungibleToken, nonFungibleToken];
|
||||
const fungibleValueToTransfer = new BigNumber(200);
|
||||
const nonFungibleValueToTransfer = new BigNumber(1);
|
||||
const valuesToTransfer = [fungibleValueToTransfer, nonFungibleValueToTransfer];
|
||||
@@ -317,8 +294,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdxNonFungible]).to.be.bignumber.equal(nftNotOwnerBalance);
|
||||
// execute transfer
|
||||
await erc1155Wrapper.safeBatchTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
@@ -339,15 +316,13 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should trigger callback if transferring to a contract', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdxFungible = 0;
|
||||
const toIdxFungible = 1;
|
||||
const fromIdxNonFungible = 2;
|
||||
const toIdxNonFungible = 3;
|
||||
const participatingOwners = [from, to, from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType, dummyNft, dummyNft];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType, dummyNft];
|
||||
const participatingOwners = [spender, receiver, spender, receiver];
|
||||
const participatingTokens = [fungibleToken, fungibleToken, nonFungibleToken, nonFungibleToken];
|
||||
const tokenTypesToTransfer = [fungibleToken, nonFungibleToken];
|
||||
const fungibleValueToTransfer = new BigNumber(200);
|
||||
const nonFungibleValueToTransfer = new BigNumber(1);
|
||||
const valuesToTransfer = [fungibleValueToTransfer, nonFungibleValueToTransfer];
|
||||
@@ -363,8 +338,8 @@ describe('ERC1155Token', () => {
|
||||
expect(balancesBeforeTransfer[toIdxNonFungible]).to.be.bignumber.equal(nftNotOwnerBalance);
|
||||
// execute transfer
|
||||
const tx = await erc1155Wrapper.safeBatchTransferFromAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
@@ -374,8 +349,8 @@ describe('ERC1155Token', () => {
|
||||
DummyERC1155ReceiverBatchTokenReceivedEventArgs
|
||||
>;
|
||||
// check callback logs
|
||||
expect(receiverLog.args.operator).to.be.equal(from);
|
||||
expect(receiverLog.args.from).to.be.equal(from);
|
||||
expect(receiverLog.args.operator).to.be.equal(spender);
|
||||
expect(receiverLog.args.from).to.be.equal(spender);
|
||||
expect(receiverLog.args.tokenIds.length).to.be.equal(2);
|
||||
expect(receiverLog.args.tokenIds[0]).to.be.bignumber.equal(tokenTypesToTransfer[0]);
|
||||
expect(receiverLog.args.tokenIds[1]).to.be.bignumber.equal(tokenTypesToTransfer[1]);
|
||||
@@ -399,34 +374,26 @@ describe('ERC1155Token', () => {
|
||||
});
|
||||
it('should throw if transfer reverts', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const fromIdx = 0;
|
||||
const toIdx = 1;
|
||||
const participatingOwners = [from, to];
|
||||
const participatingTokens = [dummyFungibleTokenType, dummyFungibleTokenType];
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType];
|
||||
const tokenTypesToTransfer = [fungibleToken];
|
||||
const valueToTransfer = spenderInitialBalance.plus(1);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
// execute transfer
|
||||
await expectTransactionFailedAsync(
|
||||
token.safeBatchTransferFrom.sendTransactionAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
{ from },
|
||||
{ from: spender },
|
||||
),
|
||||
RevertReason.Uint256Underflow
|
||||
);
|
||||
});
|
||||
it('should throw if callback reverts', async () => {
|
||||
// setup test parameters
|
||||
const from = spender;
|
||||
const to = erc1155Receiver.address;
|
||||
const tokenTypesToTransfer = [dummyFungibleTokenType];
|
||||
const tokenTypesToTransfer = [fungibleToken];
|
||||
const valueToTransfer = new BigNumber(200);
|
||||
const valuesToTransfer = [valueToTransfer];
|
||||
const callbackData = constants.NULL_BYTES;
|
||||
@@ -435,19 +402,18 @@ describe('ERC1155Token', () => {
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc1155Receiver.setRejectTransferFlag.sendTransactionAsync(
|
||||
shouldRejectTransfer,
|
||||
{ to },
|
||||
),
|
||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||
);
|
||||
// execute transfer
|
||||
await expectTransactionFailedAsync(
|
||||
token.safeBatchTransferFrom.sendTransactionAsync(
|
||||
from,
|
||||
to,
|
||||
spender,
|
||||
receiver,
|
||||
tokenTypesToTransfer,
|
||||
valuesToTransfer,
|
||||
callbackData,
|
||||
{ from },
|
||||
{ from: spender },
|
||||
),
|
||||
RevertReason.TransferRejected
|
||||
);
|
||||
|
Reference in New Issue
Block a user