@gooddollar/goodcontracts
Version:
GoodDollar Contracts
66 lines (59 loc) • 2.48 kB
JavaScript
const SimpleDAIStaking = artifacts.require("SimpleDAIStaking");
const DAIMock = artifacts.require("DAIMock");
const cDAIMock = artifacts.require("cDAIMock");
const fse = require("fs-extra");
const BN = web3.utils.BN;
export const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
const NETWORK = "test";
contract("SimpleDAIStaking - `test` network e2e tests", ([founder, staker]) => {
let dai;
let cDAI;
let simpleStaking;
before(async function() {
let network = process.env.NETWORK;
if (network === "tdd") {
this.skip();
}
const file = await fse.readFile("releases/deployment.json", "utf8");
const deployment = await JSON.parse(file);
const addresses = deployment[NETWORK];
const DAI_ADDRESS = addresses["DAI"];
const cDAI_ADDRESS = addresses["cDAI"];
const STAKING_ADDRESS = addresses["DAIStaking"];
dai = await DAIMock.at(DAI_ADDRESS);
cDAI = await cDAIMock.at(cDAI_ADDRESS);
simpleStaking = await SimpleDAIStaking.at(STAKING_ADDRESS);
});
it("should be able to stake dai", async () => {
await dai.mint(staker, web3.utils.toWei("100", "ether"));
await dai.approve(simpleStaking.address, web3.utils.toWei("100", "ether"), {
from: staker
});
await simpleStaking
.stakeDAI(web3.utils.toWei("100", "ether"), {
from: staker
})
.catch(console.log);
let balance = await simpleStaking.stakers(staker);
expect(balance.stakedDAI.toString()).to.be.equal(
web3.utils.toWei("100", "ether") //100 dai
);
let totalStaked = await simpleStaking.totalStaked();
expect(totalStaked.toString()).to.be.equal(web3.utils.toWei("100", "ether"));
let stakedcDaiBalance = await cDAI.balanceOf(simpleStaking.address);
expect(stakedcDaiBalance.toString()).to.be.equal(
web3.utils.toWei("9900", "mwei") //8 decimals precision (99 cdai because of the exchange rate dai <> cdai)
);
});
it("should be able to withdraw stake by staker", async () => {
let stakerDaiBalanceBefore = await dai.balanceOf(staker); // staker DAI balance
let balanceBefore = await simpleStaking.stakers(staker); // user staked balance in GoodStaking
await simpleStaking.withdrawStake({
from: staker
});
let stakerDaiBalanceAfter = await dai.balanceOf(staker); // staker DAI balance
expect(balanceBefore.stakedDAI.toString()).to.be.equal(
(stakerDaiBalanceAfter - stakerDaiBalanceBefore).toString()
);
});
});