make erc20token test abstract
This commit is contained in:
parent
204892e3ce
commit
e63ae2af6e
|
@ -1,80 +1,81 @@
|
||||||
describe("ERC20Token", async function() {
|
|
||||||
this.timeout(0);
|
exports.Test = (tokenContract, afterDeploy) => {
|
||||||
var ERC20Token;
|
describe("ERC20Token", async function() {
|
||||||
var accountsArr;
|
this.timeout(0);
|
||||||
before(function(done) {
|
var ERC20Token;
|
||||||
var contractsConfig = {
|
var accountsArr;
|
||||||
"TestToken": { },
|
before(function(done) {
|
||||||
"ERC20Receiver": { }
|
var contractsConfig = {
|
||||||
};
|
"Token": tokenContract,
|
||||||
EmbarkSpec.deployAll(contractsConfig, async function(accounts) {
|
"ERC20Receiver": { }
|
||||||
ERC20Token = TestToken;
|
};
|
||||||
accountsArr = accounts;
|
EmbarkSpec.deployAll(contractsConfig, async function(accounts) {
|
||||||
for(i=0;i<accountsArr.length;i++){
|
ERC20Token = Token;
|
||||||
await ERC20Token.methods.mint(7 * 10 ^ 18).send({from: accountsArr[i]})
|
accountsArr = accounts;
|
||||||
}
|
afterDeploy(accounts, Token);
|
||||||
done()
|
done()
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
it("should transfer 1 token", async function() {
|
it("should transfer 1 token", async function() {
|
||||||
let initialBalance0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
let initialBalance0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
||||||
let initialBalance1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
let initialBalance1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
||||||
await ERC20Token.methods.transfer(accountsArr[1],1).send({from: accountsArr[0]});
|
await ERC20Token.methods.transfer(accountsArr[1],1).send({from: accountsArr[0]});
|
||||||
let result0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
let result0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
||||||
let result1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
let result1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
||||||
|
|
||||||
|
assert.equal(result0, +initialBalance0-1);
|
||||||
|
assert.equal(result1, +initialBalance1+1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should set approved amount", async function() {
|
||||||
|
await ERC20Token.methods.approve(accountsArr[2],10000000).send({from: accountsArr[0]});
|
||||||
|
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
||||||
|
assert.equal(result, 10000000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should consume allowance amount", async function() {
|
||||||
|
let initialAllowance = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
||||||
|
await ERC20Token.methods.transferFrom(accountsArr[0], accountsArr[0],1).send({from: accountsArr[2]});
|
||||||
|
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
||||||
|
|
||||||
|
assert.equal(result, +initialAllowance-1);
|
||||||
|
});
|
||||||
|
|
||||||
assert.equal(result0, +initialBalance0-1);
|
it("should transfer approved amount", async function() {
|
||||||
assert.equal(result1, +initialBalance1+1);
|
let initialBalance0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
||||||
|
let initialBalance1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
||||||
|
await ERC20Token.methods.transferFrom(accountsArr[0], accountsArr[1],1).send({from: accountsArr[2]});
|
||||||
|
let result0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
||||||
|
let result1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
||||||
|
|
||||||
|
assert.equal(result0, +initialBalance0-1);
|
||||||
|
assert.equal(result1, +initialBalance1+1);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("should unset approved amount", async function() {
|
||||||
|
await ERC20Token.methods.approve(accountsArr[2],0).send({from: accountsArr[0]});
|
||||||
|
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
||||||
|
assert.equal(result, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should deposit approved amount to contract ERC20Receiver", async function() {
|
||||||
|
await ERC20Token.methods.approve(ERC20Receiver.address,10).send({from: accountsArr[0]});
|
||||||
|
await ERC20Receiver.methods.depositToken(ERC20Token.address).send({from: accountsArr[0]});
|
||||||
|
let result = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
||||||
|
assert.equal(result, 10, "ERC20Receiver.tokenBalanceOf("+ERC20Token.address+","+accountsArr[0]+") wrong");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should witdraw approved amount from contract ERC20Receiver", async function() {
|
||||||
|
let tokenBalance = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
||||||
|
await ERC20Receiver.methods.withdrawToken(ERC20Token.address, tokenBalance).send({from: accountsArr[0]});
|
||||||
|
tokenBalance = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
||||||
|
assert.equal(tokenBalance, 0, "ERC20Receiver.tokenBalanceOf("+ERC20Token.address+","+accountsArr[0]+") wrong");
|
||||||
|
});
|
||||||
|
|
||||||
|
//TODO: include checks for expected events fired
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
it("should set approved amount", async function() {
|
|
||||||
await ERC20Token.methods.approve(accountsArr[2],10000000).send({from: accountsArr[0]});
|
|
||||||
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
|
||||||
assert.equal(result, 10000000);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should consume allowance amount", async function() {
|
|
||||||
let initialAllowance = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
|
||||||
await ERC20Token.methods.transferFrom(accountsArr[0], accountsArr[0],1).send({from: accountsArr[2]});
|
|
||||||
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
|
||||||
|
|
||||||
assert.equal(result, +initialAllowance-1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should transfer approved amount", async function() {
|
|
||||||
let initialBalance0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
|
||||||
let initialBalance1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
|
||||||
await ERC20Token.methods.transferFrom(accountsArr[0], accountsArr[1],1).send({from: accountsArr[2]});
|
|
||||||
let result0 = await ERC20Token.methods.balanceOf(accountsArr[0]).call();
|
|
||||||
let result1 = await ERC20Token.methods.balanceOf(accountsArr[1]).call();
|
|
||||||
|
|
||||||
assert.equal(result0, +initialBalance0-1);
|
|
||||||
assert.equal(result1, +initialBalance1+1);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it("should unset approved amount", async function() {
|
|
||||||
await ERC20Token.methods.approve(accountsArr[2],0).send({from: accountsArr[0]});
|
|
||||||
let result = await ERC20Token.methods.allowance(accountsArr[0], accountsArr[2]).call();
|
|
||||||
assert.equal(result, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should deposit approved amount to contract ERC20Receiver", async function() {
|
|
||||||
await ERC20Token.methods.approve(ERC20Receiver.address,10).send({from: accountsArr[0]});
|
|
||||||
await ERC20Receiver.methods.depositToken(ERC20Token.address).send({from: accountsArr[0]});
|
|
||||||
let result = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
|
||||||
assert.equal(result, 10, "ERC20Receiver.tokenBalanceOf("+ERC20Token.address+","+accountsArr[0]+") wrong");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should witdraw approved amount from contract ERC20Receiver", async function() {
|
|
||||||
let tokenBalance = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
|
||||||
await ERC20Receiver.methods.withdrawToken(ERC20Token.address, tokenBalance).send({from: accountsArr[0]});
|
|
||||||
tokenBalance = await ERC20Receiver.methods.tokenBalanceOf(ERC20Token.address, accountsArr[0]).call();
|
|
||||||
assert.equal(tokenBalance, 0, "ERC20Receiver.tokenBalanceOf("+ERC20Token.address+","+accountsArr[0]+") wrong");
|
|
||||||
});
|
|
||||||
|
|
||||||
//TODO: include checks for expected events fired
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
const ERC20Token = require('./erc20token');
|
||||||
|
|
||||||
describe("TestToken", async function() {
|
describe("TestToken", async function() {
|
||||||
this.timeout(0);
|
this.timeout(0);
|
||||||
var accountsArr;
|
var accountsArr;
|
||||||
|
@ -29,5 +31,10 @@ describe("TestToken", async function() {
|
||||||
let result = await TestToken.methods.balanceOf(accountsArr[0]).call();
|
let result = await TestToken.methods.balanceOf(accountsArr[0]).call();
|
||||||
assert.equal(result, +initialBalance+100);
|
assert.equal(result, +initialBalance+100);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ERC20Token.Test({ "instanceOf" : "TestToken" }, async function (accounts, TestToken) {
|
||||||
|
for(i=0;i<accounts.length;i++){
|
||||||
|
await TestToken.methods.mint(7 * 10 ^ 18).send({from: accounts[i]})
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue