public void Create_ForSupportedType_ReturnsBinder()
    {
        // Arrange
        var provider = new ComplexTypeModelBinderProvider();

        var context = new TestModelBinderProviderContext(typeof(Person));

        context.OnCreatingBinder(m =>
        {
            if (m.ModelType == typeof(int) || m.ModelType == typeof(string))
            {
                return(Mock.Of <IModelBinder>());
            }
            else
            {
                Assert.False(true, "Not the right model type");
                return(null);
            }
        });

        // Act
        var result = provider.GetBinder(context);

        // Assert
        Assert.IsType <ComplexTypeModelBinder>(result);
    }
    public void Create_ForNonComplexType_ReturnsNull(Type modelType)
    {
        // Arrange
        var provider = new ComplexTypeModelBinderProvider();

        var context = new TestModelBinderProviderContext(modelType);

        // Act
        var result = provider.GetBinder(context);

        // Assert
        Assert.Null(result);
    }
Example #3
0
 public IModelBinder GetBinder(ModelBinderProviderContext context)
 {
     if (context == null)
     {
         throw new ArgumentNullException(nameof(context));
     }
     if (context.Metadata.IsComplexType)
     {
         ComplexTypeModelBinderProvider p = new ComplexTypeModelBinderProvider();
         return(new JsonMultiParameterModelBinder(p.GetBinder(context)));
     }
     return(null);
 }
 public BodyOrDefaultModelBinderProvider(BodyModelBinderProvider bodyModelBinderProvider, ComplexTypeModelBinderProvider complexTypeModelBinderProvider)
 {
     _bodyModelBinderProvider        = bodyModelBinderProvider;
     _complexTypeModelBinderProvider = complexTypeModelBinderProvider;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BodyAndRouteModelBinderProvider"/> class.
 /// </summary>
 /// <param name="bodyModelBinderProvider">The body model binder provider.</param>
 /// <param name="complexTypeModelBinderProvider">The complex type model binder provider.</param>
 public BodyAndRouteModelBinderProvider(BodyModelBinderProvider bodyModelBinderProvider, ComplexTypeModelBinderProvider complexTypeModelBinderProvider)
 {
     _bodyModelBinderProvider        = bodyModelBinderProvider;
     _complexTypeModelBinderProvider = complexTypeModelBinderProvider;
 }