public async Task DAOManagementTest_Join() { await InitialDAOContract(); // Alice want to join DAO. // First approve. var balanceBefore = (await AliceTokenContractStub.GetBalance.CallAsync(new GetBalanceInput { Owner = AliceAddress, Symbol = "ELF" })).Balance; await AliceTokenContractStub.Approve.SendAsync(new ApproveInput { Spender = DAOContractAddress, Symbol = "ELF", Amount = DepositAmount }); var proposalId = (await AliceParliamentStub.CreateProposal.SendAsync(new CreateProposalInput { OrganizationAddress = ParliamentDefaultOrganizationAddress, ContractMethodName = nameof(DAOContractStub.ProposeJoin), ExpiredTime = TimestampHelper.GetUtcNow().AddHours(1), Params = AliceAddress.ToByteString(), ToAddress = DAOContractAddress })).Output; await ParliamentApproveAsync(proposalId); await AliceParliamentStub.Release.SendAsync(proposalId); // Check DAO member list. var memberList = (await DAOContractStub.GetDAOMemberList.CallAsync(new Empty())).Value; memberList.ShouldContain(AliceAddress); var balanceAfter = (await AliceTokenContractStub.GetBalance.CallAsync(new GetBalanceInput { Owner = AliceAddress, Symbol = "ELF" })).Balance; (balanceBefore - balanceAfter).ShouldBe(DepositAmount); }
public async Task DAOManagementTest_Expel() { await DAOManagementTest_Join(); var balanceBefore = (await AliceTokenContractStub.GetBalance.CallAsync(new GetBalanceInput { Owner = AliceAddress, Symbol = "ELF" })).Balance; var proposalId = (await AliceParliamentStub.CreateProposal.SendAsync(new CreateProposalInput { OrganizationAddress = ParliamentDefaultOrganizationAddress, ContractMethodName = nameof(DAOContractStub.ProposeExpel), ExpiredTime = TimestampHelper.GetUtcNow().AddHours(1), Params = AliceAddress.ToByteString(), ToAddress = DAOContractAddress })).Output; await ParliamentApproveAsync(proposalId); await AliceParliamentStub.Release.SendAsync(proposalId); // Check DAO member list. var memberList = (await DAOContractStub.GetDAOMemberList.CallAsync(new Empty())).Value; memberList.ShouldNotContain(AliceAddress); var balanceAfter = (await AliceTokenContractStub.GetBalance.CallAsync(new GetBalanceInput { Owner = AliceAddress, Symbol = "ELF" })).Balance; balanceAfter.ShouldBe(balanceBefore); }