public void ExecuteProposal_Already_Executed_Proposal_Fails()
        {
            var duration = 10u;

            var contract = CreateContract();

            contract.WhitelistAddress(voter);

            SetupMessage(proposalOwner);
            var proposalId = contract.CreateProposal(recipent, 100, duration, Description);

            SetupMessage(voter);
            contract.Vote(proposalId, true);

            SetupMessage(proposalOwner);
            SetupBlock(12);
            mContractState.Setup(m => m.GetBalance).Returns(() => 100);
            mTransactionExecutor.Setup(m => m.Transfer(mContractState.Object, recipent, 100)).Returns(TransferResult.Succeed());
            var proposal = contract.GetProposal(proposalId);

            proposal.Executed = true;
            state.SetStruct($"Proposals:{proposalId}", proposal);

            contract.Invoking(m => m.ExecuteProposal(proposalId))
            .Should()
            .Throw <SmartContractAssertException>()
            .WithMessage("The proposal is already executed.");
        }
        public void MappAddress_Fails_If_SecondaryAddress_Is_Mapped_Already(Status status)
        {
            state.SetStruct($"MappingInfo:{secondaryAddress}", new MappingInfo {
                Primary = primaryAddress, Status = (int)status
            });

            mContractState.Setup(x => x.Message).Returns(new Message(contractAddress, primaryAddress, 0));

            var contract = new AddressMapper(mContractState.Object, ownerAddress);

            Assert.Throws <SmartContractAssertException>(() => contract.MapAddress(secondaryAddress));
        }