public void ShouldReturnNullForUnregisteredAction() { var call = new ActionCall(typeof(UnRegisteredAction), ReflectionHelper.GetMethod<UnRegisteredAction>(a => a.Get(new object()))); var context = new ValidationFailure(call, new Notification(typeof(object)), new object()); var request = descriptor.DescribeModelFor(context); request.ShouldBeNull(); }
public void Handle(ValidationFailure context) { _flash.Flash(context.Notification.AllMessages.Select(m => m.ToString())); var continuation = FubuContinuation.RedirectTo<PlaceOrderStart>(); _request.Set(continuation); _handler.Handle(); }
public Type DescribeModelFor(ValidationFailure context) { ActionCall getCall; var attributes = context.Target.Method.GetCustomAttributes(false); var handler = context.Target.Method.GetCustomAttributes(false).OfType<ValidationHandlerAttribute>().FirstOrDefault(); if (handler != null) { getCall = graph .Behaviors .Where(chain => chain.FirstCall() != null && chain.FirstCall().InputType() == handler.InputType) .Select(chain => chain.FirstCall()) .FirstOrDefault(); } else { var targetNamespace = context.Target.HandlerType.Namespace; getCall = graph .Behaviors .Where(chain => chain.FirstCall() != null && chain.FirstCall().HandlerType.Namespace == targetNamespace && chain.Route.AllowedHttpMethods.Contains("GET")) .Select(chain => chain.FirstCall()) .FirstOrDefault(); } if (getCall == null) { return null; } return getCall.InputType(); }
public void ShouldGetRequestForViewModel() { var call = new ActionCall(typeof (RegisterAction),ReflectionHelper.GetMethod<RegisterAction>(a => a.Post(new RegisterViewModel()))); var context = new ValidationFailure(call, new Notification(typeof(RegisterViewModel)), new RegisterViewModel()); var request = descriptor.DescribeModelFor(context); request.ShouldEqual(typeof (RegisterRequest)); }
public bool Matches(ValidationFailure context) { var type = context.Target.OutputType(); if(type == null) { return false; } return typeof (AjaxContinuation).IsAssignableFrom(type); }
public void SetUp() { request = new InMemoryFubuRequest(); handler = MockRepository.GenerateStub<IValidationContinuationHandler>(); flash = MockRepository.GenerateStub<IFlash>(); policy = new PlaceOrderValidationFailurePolicy(request, handler, flash); var notification = Notification.Invalid(); var failure = new ValidationFailure(null, notification, null); policy.Handle(failure); }
public void Handle(ValidationFailure context) { var notification = _request.Get<Notification>(); var modelType = context.InputType(); var policy = _policies.LastOrDefault(p => p.Matches(context)); if(policy == null) { throw new FubuMVCValidationException(1001, notification, "No validation failure policy found for {0}", modelType.FullName); } policy.Handle(context); }
public Type DescribeModelFor(ValidationFailure context) { var handlerType = context.Target.HandlerType; var getCall = graph .Behaviors .Where(chain => chain.FirstCall() != null && chain.FirstCall().HandlerType == handlerType && chain.Route.AllowedHttpMethods.Contains("GET")) .Select(chain => chain.FirstCall()) .FirstOrDefault(); if(getCall == null) return null; return getCall.InputType(); }
public Type DescribeModelFor(ValidationFailure context) { // Remember, behavior chains can be identified by the input model type // The IFubuContinuationModelDescriptor interface is used to describe the input model type of the chain // that we want to transfer to // we're going to query the BehaviorGraph to find the corresponding GET for the POST // obviously, we'd need to make this smarter but this is just a simple example var targetNamespace = context.Target.HandlerType.Namespace; var getCall = _graph .Behaviors .Where(chain => chain.FirstCall() != null && chain.FirstCall().HandlerType.Namespace == targetNamespace && chain.Route.AllowedHttpMethods.Contains("GET")) .Select(chain => chain.FirstCall()) .FirstOrDefault(); if(getCall == null) { return null; } return getCall.InputType(); }
public FubuContinuation Resolve(ValidationFailure context) { return _continuationBuilder(_resolver.ModelFor(context)); }
public object ModelFor(ValidationFailure context) { return _converter(context); }
public bool Matches(ValidationFailure context) { return context.InputType() == typeof (PickupOrder); }
public bool Matches(ValidationFailure context) { return _predicate(context); }
public void Handle(ValidationFailure context) { var continuation = _continuationResolver.Resolve(context.Notification); _writer.Write(continuation.ToDictionary(), MimeType.Json.ToString()); }
public bool Equals(ValidationFailure other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return Equals(other._target, _target); }
public FubuContinuation Resolve(ValidationFailure context) { return _continuation; }
public Type DescribeModelFor(ValidationFailure context) { return _provider.GetDescriptor(context.Target); }
public void Handle(ValidationFailure context) { var continuation = _continuationResolver.Resolve(context); _request.Set(continuation); _handler.Handle(); }