public void Invalid_DataToken_Model_Type_Returns_Null()
        {
            var binder    = new RenderModelBinder();
            var routeData = new RouteData();

            routeData.DataTokens[Core.Constants.Web.UmbracoDataToken] = "hello";

            //the value provider is the default implementation
            var valueProvider = new Mock <IValueProvider>();
            //also IUnvalidatedValueProvider
            var invalidatedValueProvider = valueProvider.As <IUnvalidatedValueProvider>();

            invalidatedValueProvider.Setup(x => x.GetValue(It.IsAny <string>(), It.IsAny <bool>())).Returns(() =>
                                                                                                            new ValueProviderResult(null, "", CultureInfo.CurrentCulture));

            var controllerCtx = new ControllerContext(
                Mock.Of <HttpContextBase>(http => http.Items == new Dictionary <object, object>()),
                routeData,
                Mock.Of <ControllerBase>());

            var result = binder.BindModel(controllerCtx,
                                          new ModelBindingContext
            {
                ValueProvider = valueProvider.Object,
                ModelMetadata = new ModelMetadata(new EmptyModelMetadataProvider(), null, () => null, typeof(IPublishedContent), "content")
            });

            Assert.IsNull(result);
        }
        public void BindModel_IPublishedContent_To_Generic_RenderModel()
        {
            var content = new MyContent(Mock.Of <IPublishedContent>());
            var bound   = (IRenderModel)RenderModelBinder.BindModel(content, typeof(RenderModel <MyContent>), CultureInfo.CurrentCulture);

            Assert.AreSame(content, bound.Content);
        }
        public void BindModel_Returns_If_Same_Type()
        {
            var content = new MyContent(Mock.Of <IPublishedContent>());
            var bound   = RenderModelBinder.BindModel(content, typeof(IPublishedContent), CultureInfo.CurrentCulture);

            Assert.AreSame(content, bound);
        }
        public void No_DataToken_Returns_Null()
        {
            var binder    = new RenderModelBinder();
            var routeData = new RouteData();
            var result    = binder.BindModel(new ControllerContext(Mock.Of <HttpContextBase>(), routeData, Mock.Of <ControllerBase>()),
                                             new ModelBindingContext());

            Assert.IsNull(result);
        }
        public void Returns_Binder_For_IPublishedContent_And_IRenderModel()
        {
            var binder = new RenderModelBinder();
            var found  = binder.GetBinder(typeof(IPublishedContent));

            Assert.IsNotNull(found);
            found = binder.GetBinder(typeof(RenderModel));
            Assert.IsNotNull(found);
            found = binder.GetBinder(typeof(DynamicPublishedContent));
            Assert.IsNotNull(found);
            found = binder.GetBinder(typeof(MyContent));
            Assert.IsNotNull(found);
            found = binder.GetBinder(typeof(RenderModel <MyContent>));
            Assert.IsNotNull(found);

            found = binder.GetBinder(typeof(MyOtherContent));
            Assert.IsNull(found);
            found = binder.GetBinder(typeof(MyCustomRenderModel));
            Assert.IsNull(found);
            found = binder.GetBinder(typeof(IRenderModel));
            Assert.IsNull(found);
        }
 public void BindModel_Null_Source_Returns_Null()
 {
     Assert.IsNull(RenderModelBinder.BindModel(null, typeof(MyContent), CultureInfo.CurrentCulture));
 }