electusaction
Version:
Electus Action Framework
96 lines (93 loc) • 4.18 kB
JavaScript
var ActionTest = artifacts.require("./ActionTest.sol");
var TokenProportionalCappedTest = artifacts.require("electusvoting/contracts/testContracts/TokenProportionalCappedTest.sol");
var TokenProportionalUncappedTest = artifacts.require("electusvoting/contracts/testContracts/TokenProportionalUncappedTest.sol");
var ElectusProtocol = artifacts.require("electusvoting/contracts/protocol/Protocol.sol");
var TestToken = artifacts.require("./FreezableTestToken.sol");
const increaseTime = require("./utils/increaseTime");
contract("Action Test", function(accounts) {
let protocol1Contract;
let protocol2Contract;
let protocol3Contract;
let token1;
let token2;
let pollContract1;
let pollContract2;
let actionContract;
beforeEach("setup", async () => {
protocol1Contract = await ElectusProtocol.new("0x57616e636861696e", "0x57414e");
await protocol1Contract.addAttributeSet(web3.utils.fromAscii("hair"), [web3.utils.fromAscii("black")]);
await protocol1Contract.assignTo(accounts[1], [0], {
from: accounts[0]
});
protocol2Contract = await ElectusProtocol.new("0x55532026204368696e61", "0x5543");
await protocol2Contract.addAttributeSet(web3.utils.fromAscii("hair"), [web3.utils.fromAscii("black")]);
await protocol2Contract.assignTo(accounts[2], [0], {
from: accounts[0]
});
protocol3Contract = await ElectusProtocol.new("0x55532026204368696e61", "0x5543");
await protocol3Contract.addAttributeSet(web3.utils.fromAscii("hair"), [web3.utils.fromAscii("black")]);
await protocol3Contract.assignTo(accounts[2], [0], {
from: accounts[0]
});
token1 = await TestToken.new();
await token1.transfer(accounts[2], 100);
token2 = await TestToken.new();
await token2.transfer(accounts[2], 100);
var presentTime = (await web3.eth.getBlock(await web3.eth.getBlockNumber())).timestamp;
const startTime = presentTime + 10000;
pollContract1 = await TokenProportionalCappedTest.new(
[],
["0x68656c6c6f", "0x776f726c64"],
token1.address,
100,
"0x57616e636861696e",
"0x41646d696e20456c656374696f6e20466f722032303138",
"0x4f6e6520506572736f6e204f6e6520566f7465",
startTime,
"0"
);
pollContract2 = await TokenProportionalUncappedTest.new(
[],
["0x68656c6c6f", "0x776f726c64"],
token2.address,
"0x57616e636861696e",
"0x41646d696e20456c656374696f6e20466f722032303138",
"0x4f6e6520506572736f6e204f6e6520566f7465",
startTime,
"0"
);
actionContract = await ActionTest.new([pollContract1.address, pollContract2.address], accounts[0]);
await actionContract.sendTransaction({
value: await web3.utils.toWei("1", "ether").toString(),
from: accounts[0]
});
});
it("can execute method: returns 1", async () => {
await increaseTime(10000);
await pollContract1.vote("1", { from: accounts[2] });
await pollContract2.vote("1", { from: accounts[2] });
const execute = await actionContract.canExecute();
assert.equal(web3.utils.toDecimal(execute), 1);
});
it("can execute method: returns 0", async () => {
await increaseTime(10000);
await pollContract1.vote("1", { from: accounts[2] });
const execute = await actionContract.canExecute();
assert.equal(web3.utils.toDecimal(execute), 0);
});
it("execute method: success", async () => {
await increaseTime(10000);
await pollContract1.vote("1", { from: accounts[2] });
await pollContract2.vote("1", { from: accounts[2] });
await actionContract.execute();
const balance = await web3.eth.getBalance(actionContract.address);
assert.equal(web3.utils.toDecimal(balance), 0);
});
it("execute method: failure", async () => {
await increaseTime(10000);
await pollContract1.vote("1", { from: accounts[2] });
await actionContract.execute();
const balance = await web3.eth.getBalance(actionContract.address);
assert.equal(web3.utils.fromWei(balance.toString(), "ether"), 1);
});
});