public void Should_only_bind_from_Form_by_default()
        {
            _context.HttpContext.Request.QueryString["cust.Id"] = "5";

            var binder = new CastleBindAttribute();
            var customer = (Customer)binder.BindModel(_context, CreateContext("cust", typeof(Customer)));

            Assert.That(customer, Is.Null);
        }
        public void Should_be_configurable_to_bind_from_other_sources()
        {
            _context.HttpContext.Request.QueryString["cust.Id"] = "5";

            var binder = new CastleBindAttribute(RequestStore.QueryString);
            var customer = (Customer)binder.BindModel(_context, CreateContext("cust", typeof(Customer)));

            Assert.That(customer.Id, Is.EqualTo(5));
        }
        public void Should_bind_using_parameter_name()
        {
            _context.HttpContext.Request.Form["cust.Id"] = "5";
            _context.HttpContext.Request.Form["cust.Name"] = "Jeremy";

            var binder = new CastleBindAttribute();
            object value = binder.BindModel(_context, CreateContext("cust", typeof(Customer)));
            var customer = value as Customer;

            Assert.That(customer, Is.Not.Null);
            Assert.That(customer.Name, Is.EqualTo("Jeremy"));
            Assert.That(customer.Id, Is.EqualTo(5));
        }
        public void When_the_controller_implements_ICastleBindingContainer_and_the_binder_is_already_set_then_it_should_be_used()
        {
            var castleBinder = new DataBinder();
            var controller = new CastleBindableController {Binder = castleBinder};

            _context = CreateControllerContext(controller);
            _context.HttpContext.Request.Form["cust.Id"] = "Fail";

            var binder = new CastleBindAttribute();
            binder.BindModel(_context, CreateContext("cust", typeof(Customer)));

            Assert.That(controller.Binder, Is.SameAs(castleBinder));
            Assert.That(castleBinder.ErrorList["Id"], Is.Not.Null);
        }
        public void Should_return_null_when_unable_to_find_model_name()
        {
            var binder = new CastleBindAttribute();
            object value = binder.BindModel(_context, CreateContext("cust", typeof(Customer)));
            var customer = value as Customer;

            Assert.That(customer, Is.Null);
        }
        public void When_the_controller_implements_ICastleBindingContainer_then_the_binder_should_be_made_accessible_to_the_controller()
        {
            var controller = new CastleBindableController();
            _context = CreateControllerContext(controller);

            var binder = new CastleBindAttribute();
            binder.BindModel(_context, CreateContext("cust", typeof(Customer)));

            Assert.That(controller.Binder, Is.Not.Null);
        }