Example #1
0
        public Form1()
        {
            InitializeComponent();

            _binder                 = new FormBinder <Customer, int>(this, _db);
            _binder.RecordSaved    += binder_RecordSaved;
            _binder.RecordLoaded   += binder_RecordSaved;
            _binder.ValidationPanel = validationPanel1;

            _binder.AddControl(cbOrg, c => c.OrganizationId);
            _binder.AddControl(tbFirstName, c => c.FirstName);
            _binder.AddControl(tbLastName, c => c.LastName);
            _binder.AddControl(tbAddress, c => c.Address);
            _binder.AddControl(tbCity, c => c.City, null);
            _binder.AddControl <string>(cbState, c => c.State);
            _binder.AddControl(tbZipCode, c => c.ZipCode);
            _binder.AddControl(tbEmail, c => c.Email);
            _binder.AddControl(chkSendNewsletter, c => c.SendNewsletter, true);
            _binder.AddRadioButtons(new RadioButtonDictionary <bool>()
            {
                { true, rbIsTaxExemptTrue },
                { false, rbTaxExemptFalse }
            }, c => c.IsTaxExempt, false);

            _binder.ToolStrip = formBinderToolStrip1;
        }
Example #2
0
        public async Task Should_map_null_if_there_are_no_parameters()
        {
            var requestGraph = RequestGraph
                               .CreateFor <Handler>(h => h.Params(null, null, null))
                               .WithRequestData("")
                               .AddQuerystringParameter("param1")
                               .AddQuerystringParameter("param2");

            var binder = new FormBinder(requestGraph.ValueMappers,
                                        requestGraph.Configuration);

            await binder.Bind(requestGraph.GetRequestBinderContext());

            requestGraph.ActionArguments.ShouldOnlyContain(null, null, null);
        }
Example #3
0
        public async Task Should_map_parameters_that_were_not_passed_as_null()
        {
            var requestGraph = RequestGraph
                               .CreateFor <Handler>(h => h.Params(null, null, null))
                               .WithRequestData("param1=value1")
                               .AddQuerystringParameter("param1")
                               .AddValueMapper1(x => x.Values.First());

            var binder = new FormBinder(requestGraph.ValueMappers,
                                        requestGraph.Configuration);

            await binder.Bind(requestGraph.GetRequestBinderContext());

            requestGraph.ActionArguments.ShouldOnlyContain(null, "value1", null);
        }
Example #4
0
        public async Task Should_map_multiple_parameters_with_the_same_name_as_an_array()
        {
            var requestGraph = RequestGraph
                               .CreateFor <Handler>(h => h.MultiParams(null))
                               .WithRequestData("param1=value1&param1=value2")
                               .AddQuerystringParameter("param1")
                               .AddValueMapper1(x => x.Values);

            var binder = new FormBinder(requestGraph.ValueMappers,
                                        requestGraph.Configuration);

            await binder.Bind(requestGraph.GetRequestBinderContext());

            requestGraph.ActionArguments[0].CastTo <string[]>()
            .ShouldOnlyContain("value1", "value2");
        }
Example #5
0
        public async Task Should_not_use_a_mapper_that_doesnt_apply_at_runtime()
        {
            var requestGraph = RequestGraph
                               .CreateFor <Handler>(h => h.Params(null, null, null))
                               .WithRequestData("param1=value1&param2=value2")
                               .AddQuerystringParameter("param1")
                               .AddQuerystringParameter("param2")
                               .AddValueMapper1(x => x.Values.First() + "mapper1", instanceAppliesTo: x => false)
                               .AddValueMapper2(x => x.Values.First() + "mapper2");

            var binder = new FormBinder(requestGraph.ValueMappers,
                                        requestGraph.Configuration);

            await binder.Bind(requestGraph.GetRequestBinderContext());

            requestGraph.ActionArguments.ShouldOnlyContain(null, "value1mapper2", "value2mapper2");

            requestGraph.ValueMapper1.AppliesToCalled.ShouldBeTrue();
            requestGraph.ValueMapper1.MapCalled.ShouldBeFalse();

            requestGraph.ValueMapper2.AppliesToCalled.ShouldBeTrue();
            requestGraph.ValueMapper2.MapCalled.ShouldBeTrue();
        }
Example #6
0
        public async Task Should_bind_form_values()
        {
            var requestGraph = RequestGraph
                               .CreateFor <Handler>(h => h.Params(null, null, null))
                               .WithRequestData("param1=value1&param2=value2")
                               .AddQuerystringParameter("param1")
                               .AddQuerystringParameter("param2")
                               .AddValueMapper1(x => x.Values.First());

            var binder = new FormBinder(requestGraph.ValueMappers,
                                        requestGraph.Configuration);

            await binder.Bind(requestGraph.GetRequestBinderContext());

            requestGraph.ActionArguments.ShouldOnlyContain(null, "value1", "value2");

            requestGraph.ValueMapper1.AppliesToContext.RequestContext.ShouldNotBeNull();
            requestGraph.ValueMapper1.AppliesToContext.Parameter.ShouldNotBeNull();
            requestGraph.ValueMapper1.AppliesToContext.Values.ShouldNotBeNull();

            requestGraph.ValueMapper1.MapContext.RequestContext.ShouldNotBeNull();
            requestGraph.ValueMapper1.MapContext.Parameter.ShouldNotBeNull();
            requestGraph.ValueMapper1.MapContext.Values.ShouldNotBeNull();
        }