ERC1155 feature pending tasks (#2014)
* Initial ERC1155 implementation with some tests (#1803) * Initial ERC1155 implementation with some tests * Remove mocked isERC1155TokenReceiver * Revert reason edit nit * Remove parameters associated with isERC1155TokenReceiver call * Add tests for approvals and single transfers * Add tests for transferring to contracts * Add tests for batch transfers * Make expectEvent.inTransaction tests async * Renamed "owner" to "account" and "holder" * Document unspecified balanceOfBatch reversion on zero behavior * Ensure accounts can't set their own operator status * Specify descriptive messages for underflow errors * Bring SafeMath.add calls in line with OZ style * Explicitly prevent _burn on the zero account * Implement batch minting/burning * Refactored operator approval check into isApprovedForAll calls * Renamed ERC1155TokenReceiver to ERC1155Receiver * Added ERC1155Holder * Fix lint issues * Migrate tests to @openzeppelin/test-environment * Port ERC 1155 branch to Solidity 0.6 (and current master) (#2130) * port ERC1155 to Solidity 0.6 * make ERC1155 constructor more similar to ERC721 one * also migrate mock contracts to Solidity 0.6 * mark all non-view functions as virtual Co-authored-by: Alan Lu <alanlu1023@gmail.com> Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com> Co-authored-by: Robert Kaiser <kairo@kairo.at>
This commit is contained in:
committed by
GitHub
parent
0c7b2ec09e
commit
956d6632d9
46
test/token/ERC1155/ERC1155Holder.test.js
Normal file
46
test/token/ERC1155/ERC1155Holder.test.js
Normal file
@ -0,0 +1,46 @@
|
||||
const { accounts, contract } = require('@openzeppelin/test-environment');
|
||||
const { BN } = require('@openzeppelin/test-helpers');
|
||||
|
||||
const ERC1155Holder = contract.fromArtifact('ERC1155Holder');
|
||||
const ERC1155Mock = contract.fromArtifact('ERC1155Mock');
|
||||
|
||||
const { expect } = require('chai');
|
||||
|
||||
describe('ERC1155Holder', function () {
|
||||
const [creator] = accounts;
|
||||
|
||||
it('receives ERC1155 tokens', async function () {
|
||||
const multiToken = await ERC1155Mock.new({ from: creator });
|
||||
const multiTokenIds = [new BN(1), new BN(2), new BN(3)];
|
||||
const multiTokenAmounts = [new BN(1000), new BN(2000), new BN(3000)];
|
||||
await multiToken.mintBatch(creator, multiTokenIds, multiTokenAmounts, '0x', { from: creator });
|
||||
|
||||
const transferData = '0xf00dbabe';
|
||||
|
||||
const holder = await ERC1155Holder.new();
|
||||
|
||||
await multiToken.safeTransferFrom(
|
||||
creator,
|
||||
holder.address,
|
||||
multiTokenIds[0],
|
||||
multiTokenAmounts[0],
|
||||
transferData,
|
||||
{ from: creator },
|
||||
);
|
||||
|
||||
expect(await multiToken.balanceOf(holder.address, multiTokenIds[0])).to.be.bignumber.equal(multiTokenAmounts[0]);
|
||||
|
||||
await multiToken.safeBatchTransferFrom(
|
||||
creator,
|
||||
holder.address,
|
||||
multiTokenIds.slice(1),
|
||||
multiTokenAmounts.slice(1),
|
||||
transferData,
|
||||
{ from: creator },
|
||||
);
|
||||
|
||||
for (let i = 1; i < multiTokenIds.length; i++) {
|
||||
expect(await multiToken.balanceOf(holder.address, multiTokenIds[i])).to.be.bignumber.equal(multiTokenAmounts[i]);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user