public void EnablesIfTargetNullBehaviourIsEnableAndTargetIsNull()
 {
     var cmd = new CommandAction(this.subject, null, "DoSomething", ActionUnavailableBehaviour.Enable, ActionUnavailableBehaviour.Disable);
     View.SetActionTarget(this.subject, null);
     Assert.True(cmd.CanExecute(null));
 }
 public void PropagatesGuardPropertException()
 {
     var cmd = new CommandAction(this.subject, null, "DoSomethingWithUnsuccessfulGuardMethod", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     var e = Assert.Throws<InvalidOperationException>(() => cmd.CanExecute(null));
     Assert.AreEqual("foo", e.Message);
 }
 public void ControlIsEnabledIfTargetIsDefault()
 {
     View.SetActionTarget(this.subject, View.InitialActionTarget);
     var cmd = new CommandAction(this.subject, null, "DoSomething", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     Assert.True(cmd.CanExecute(null));
 }
 public void ChangesEnabledStateWhenGuardChanges()
 {
     this.target.CanDoSomethingWithGuard = false;
     var cmd = new CommandAction(this.subject, null, "DoSomethingWithGuard", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     Assert.False(cmd.CanExecute(null));
     this.target.CanDoSomethingWithGuard = true;
     Assert.True(cmd.CanExecute(null));
 }
 public void IgnoresGuardIfGuardDoesNotReturnBool()
 {
     var cmd = new CommandAction(this.subject, null, "DoSomethingWithBadGuard", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     Assert.True(cmd.CanExecute(true));
 }
 public void DisablesIfTargetAndActionExistAndGuardMethodReturnsFalse()
 {
     this.target.CanDoSomethingWithGuard = false;
     var cmd = new CommandAction(this.subject, null, "DoSomethingWithGuard", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     Assert.False(cmd.CanExecute(null));
 }
 public void EnablesIfTargetAndActionExistAndNoGuardMethod()
 {
     var cmd = new CommandAction(this.subject, null, "DoSomething", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Throw);
     Assert.True(cmd.CanExecute(null));
 }
 public void EnablesIfActionNonExistentBehaviourIsThrowAndActionIsNonExistent()
 {
     var cmd = new CommandAction(this.subject, null, "DoSomething", ActionUnavailableBehaviour.Throw, ActionUnavailableBehaviour.Enable);
     View.SetActionTarget(this.subject, new Target2());
     Assert.True(cmd.CanExecute(null));
 }