public void UpdateAdmin_Success(bool approval)
        {
            var contract        = createNewConfigContract();
            var newAdminAddress = AdminTwo;

            MockContractState.Setup(x => x.Message).Returns(new Message(ContractAddress, AdminOne, 0));

            contract.UpdateAdmin(newAdminAddress, approval);

            MockPersistentState.Verify(x => x.SetBool($"Admin:{AdminTwo}", approval), Times.Once);

            var expectedRoleLog = new RoleLog
            {
                Blame          = contract.Message.Sender,
                UpdatedAddress = newAdminAddress,
                UpdatedValue   = approval,
                Action         = nameof(JsonConfig.UpdateAdmin),
                Block          = contract.Block.Number
            };

            MockContractLogger.Verify(x => x.Log(It.IsAny <ISmartContractState>(), expectedRoleLog), Times.Once);
        }
        public void UpdateAdmin_Failure_Sender_IsNot_Admin()
        {
            var newAdminAddress = AdminTwo;
            var approval        = true;
            var contract        = createNewConfigContract();

            MockContractState.Setup(x => x.Message).Returns(new Message(ContractAddress, Unauthorized, 0));

            Assert.ThrowsAny <SmartContractAssertException>(() => contract.UpdateAdmin(newAdminAddress, approval));

            MockPersistentState.Verify(x => x.SetBool($"Admin:{newAdminAddress}", approval), Times.Never);

            var expectedRoleLog = new RoleLog
            {
                Blame          = Unauthorized,
                UpdatedAddress = newAdminAddress,
                Action         = nameof(contract.UpdateAdmin),
                UpdatedValue   = approval,
                Block          = contract.Block.Number
            };

            MockContractLogger.Verify(x => x.Log(It.IsAny <ISmartContractState>(), expectedRoleLog), Times.Never);
        }