public void ForwardsICommandCanExecuteChangedEventToReferencedGtkButtonFieldIsSensitiveProperty(bool canExecute) { var returnFirst = !canExecute; var returnLast = canExecute; var button = new Mock <IButton>(); var command = new Mock <ICommand>(); command.Setup(x => x.CanExecute(It.IsAny <object>())).Returns(returnFirst); var viewModel = new Mock <TestData.ViewModel.WithCommandProperty>(); viewModel.Setup(x => x.CommandProperty).Returns(command.Object); var obj = new BindButtonToCommand(button.Object); obj.Bind(viewModel.Object, nameof(viewModel.Object.CommandProperty)); //Setup again, to return a different value, if event is raised command.Setup(x => x.CanExecute(It.IsAny <object>())).Returns(returnLast); command.Raise(x => x.CanExecuteChanged += null, EventArgs.Empty); command.Verify(x => x.CanExecute(It.IsAny <object>()), Times.AtLeastOnce); button.VerifySet(x => x.Sensitive = returnLast, Times.Once); }
public void BindThrowsBindingExceptionIfAttributeDoesNotReferenceICommandInViewModel() { var viewModel = new Mock <TestData.ViewModel.WithCommandProperty>(); viewModel.Setup(x => x.ObjectProperty).Returns(new object()); var obj = new BindButtonToCommand(Mock.Of <IButton>()); Assert.ThrowsException <BindingException>(() => obj.Bind(viewModel.Object, nameof(TestData.ViewModel.WithCommandProperty.ObjectProperty))); }