From 503593d70517d4783ceca9f9452a90edcce19cdc Mon Sep 17 00:00:00 2001 From: ryzhak Date: Mon, 22 Oct 2018 19:39:19 +0300 Subject: [PATCH] added test for voting revert --- test/DevZenDao.functional.tests.js | 218 ++--------------------------- 1 file changed, 13 insertions(+), 205 deletions(-) diff --git a/test/DevZenDao.functional.tests.js b/test/DevZenDao.functional.tests.js index 622940d..dedf969 100644 --- a/test/DevZenDao.functional.tests.js +++ b/test/DevZenDao.functional.tests.js @@ -53,212 +53,20 @@ contract("DevZenDaoAuto", (accounts) => { devZenDaoAuto = DevZenDaoAuto.at(await devZenDaoFactory.devZenDaoAuto()); }); - describe("withdrawEtherAuto", () => { - it("should withdraw ether to specified address", async() => { - await devZenDao.moveToNextEpisode(false, {from:boss}).should.be.fulfilled; - - const initialBalance = web3.eth.getBalance(patron); - const value = web3.toWei(1, "ether"); - await devZenDao.buyTokens({ value: value, from: patron }).should.be.fulfilled; - - const balanceAfterTokensBought = web3.eth.getBalance(patron); - assert.isTrue(initialBalance.toNumber() - balanceAfterTokensBought.toNumber() > value, 'patron should spend 1 ETH on tokens'); - - await devZenDaoAuto.withdrawEtherAuto(patron,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - const balanceAfterWithdraw = web3.eth.getBalance(patron); - assert.isTrue(balanceAfterWithdraw.toNumber() > balanceAfterTokensBought.toNumber(), '1 ETH should be withdrawn to patron'); - }); - }); - - describe("selectNextHostAuto", () => { - it("should set next episode's host if it is not yet selected", async() => { - await devZenDaoAuto.selectNextHostAuto(boss, {from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - const nextEpisode = await devZenDao.nextEpisode(); - const nextShowHostIndex = 0; - assert.equal(nextEpisode[nextShowHostIndex], boss); - }); - - }); - - describe("changeTheGuestAuto", () => { - it("should set the new guest", async() => { - await devZenDao.moveToNextEpisode(false,{from:boss}).should.be.fulfilled; - const value = web3.toWei("0.5", "ether"); - - // guest1 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest1 }).should.be.fulfilled; - // guest1 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest1 }); - // guest1 becomes the next show guest - await devZenDao.becomeTheNextShowGuest({ from: guest1 }).should.be.fulfilled; - - const nextShowGuestIndex = 1; - let nextEpisode = await devZenDao.nextEpisode(); - assert.equal(nextEpisode[nextShowGuestIndex], guest1, "guest1 is now guest because he has paid for it"); - - // guest2 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest2 }).should.be.fulfilled; - // guest2 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest2 }); - - // manually change the guest to guest2 - await devZenDaoAuto.changeTheGuestAuto(guest2, {from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - nextEpisode = await devZenDao.nextEpisode(); - assert.equal(nextEpisode[nextShowGuestIndex], guest2, "guest2 is now guest because he was selected manually"); - }); - - it("should return stake to previous guest", async() => { - await devZenDao.moveToNextEpisode(false, {from:boss}).should.be.fulfilled; - const value = web3.toWei("0.5", "ether"); - - // guest1 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest1 }).should.be.fulfilled; - // guest1 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest1 }); - // guest1 becomes the next show guest - await devZenDao.becomeTheNextShowGuest({ from: guest1 }).should.be.fulfilled; - - // guest2 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest2 }).should.be.fulfilled; - // guest2 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest2 }); - - const guest1BalanceBefore = await devZenToken.balanceOf(guest1); - assert.equal(guest1BalanceBefore.toNumber(), 0, "should be 0 because guest1 bought 5 DZT and put them at stake to become a guest") - - // manually change the guest to guest2 - await devZenDaoAuto.changeTheGuestAuto(guest2,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - const guest1BalanceAfter = await devZenToken.balanceOf(guest1); - assert.equal(guest1BalanceAfter.toNumber(), 5e18, "should be 5 because stake is returned to guest1"); - }); - - it("should not return stake to previous guest if it was an emergency guest", async() => { - await devZenDao.moveToNextEpisode(false,{from:boss}).should.be.fulfilled; - const value = web3.toWei("0.5", "ether"); - - // guest1 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest1 }).should.be.fulfilled; - // guest1 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest1 }); - // guest1 becomes the next show guest - await devZenDao.becomeTheNextShowGuest({ from: guest1 }).should.be.fulfilled; - - // host sets guest2 an emergency guest - await devZenDaoAuto.emergency_ChangeTheGuestAuto(guest2,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - // guest3 buys 5 DZT - await devZenDao.buyTokens({ value: value, from: guest3 }).should.be.fulfilled; - // guest3 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest3 }); - - const balanceGuest2Before = await devZenToken.balanceOf(guest2); - assert.equal(balanceGuest2Before.toNumber(), 0, "should be 0 because it is an emergency guest"); - - // host sets "legal" guest - await devZenDaoAuto.changeTheGuestAuto(guest3,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,1); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - const balanceGuest2After = await devZenToken.balanceOf(guest2); - assert.equal(balanceGuest2After.toNumber(), 0, "should be 0 because emergency guest put nothing at stake"); - }); - }); - - describe("moveToNextEpisodeAuto", () => { - - it("should mint DZTREP to guest if he came", async() => { - await devZenDaoAuto.moveToNextEpisodeAuto(false,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - // guest1 buys 5 DZT - const value = web3.toWei("0.5", "ether"); - await devZenDao.buyTokens({ value: value, from: guest1 }).should.be.fulfilled; - // guest1 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest1 }); - // guest1 becomes the next show guest - await devZenDao.becomeTheNextShowGuest({ from: guest1 }).should.be.fulfilled; - - const repBalanceBefore = await repToken.balanceOf(guest1); - assert.equal(repBalanceBefore.toNumber(), 0); - - // 7 days passed and guest came - await increaseTime(60 * 60 * 24 * 7); - await devZenDao.moveToNextEpisode(true,{from:boss}).should.be.fulfilled; - - const repTokensRewardGuest = await devZenDao.params(web3.sha3("RepTokensReward_Guest")); - const repTokensRewardGuestIndex = 6; - - const repBalanceAfter = await repToken.balanceOf(guest1); - assert.equal(repBalanceAfter.toNumber(), repTokensRewardGuest.toNumber()); - }); - - it("should transfer guest's stake back if initial guest has come", async() => { - await devZenDaoAuto.moveToNextEpisodeAuto(false,{from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - // guest1 buys 5 DZT - const value = web3.toWei("0.5", "ether"); - await devZenDao.buyTokens({ value: value, from: guest1 }).should.be.fulfilled; - // guest1 allows to spend his 5 DZT - await devZenToken.approve(devZenDao.address, 5e18, { from: guest1 }); - // guest1 becomes the next show guest - await devZenDao.becomeTheNextShowGuest({ from: guest1 }).should.be.fulfilled; - - const dztBalanceBefore = await devZenToken.balanceOf(guest1); - assert.equal(dztBalanceBefore.toNumber(), 0, "guest's 5 DZT were transfered to contract"); - - // 7 days passed and guest came - await increaseTime(60 * 60 * 24 * 7); - await devZenDao.moveToNextEpisode(true,{from:boss}).should.be.fulfilled; - - const dztBalanceAfter = await devZenToken.balanceOf(guest1); - assert.equal(dztBalanceAfter.toNumber(), 5e18, "guest's 5 DZT were tansfered back to guest"); + describe("addGroupMemberAuto()", () => { + it("should add group member after successful voting", async() => { + await devZenDaoAuto.addGroupMemberAuto("DevZenTeam", guest1, {from: boss}).should.be.fulfilled; + + const proposalAddress = await daoBase.getProposalAtIndex(0); + const proposal = await IProposal.at(proposalAddress); + const votingAddress = await proposal.getVoting(); + const voting = await IVoting.at(votingAddress); + + await voting.vote(true, {from: teamMember1}); + + let members = await daoBase.getGroupMembers("DevZenTeam"); + console.log(members); }); }); - describe("updateDaoParamsAuto", () => { - it("should update param", async() => { - let paramHash = await devZenDao.MINT_TOKENS_PER_WEEK_AMOUNT(); - let paramValueBefore = await devZenDao.params(paramHash); - await devZenDaoAuto.updateDaoParamsAuto(paramHash, paramValueBefore.toNumber()*2, {from:teamMember1}).should.be.fulfilled; - voting = await getVoting(daoBase,0); - await checkVoting(voting, 1, 0, false, false); - await voting.vote(true,{from:teamMember2}); - await checkVoting(voting, 2, 0, true, true); - - let paramValueAfter = await devZenDao.params(paramHash); - assert.equal(paramValueBefore.toNumber()*2, paramValueAfter.toNumber()); - }); - }); }); \ No newline at end of file