public void ShouldMapAllPropertiesFromRequestForm() { var ctx = GetControllerContext(); var form = ctx.HttpContext.Request.Form; form.Add("employee.id", "123456"); form.Add("employee.Name", "John"); form.Add("employee.salary", "45000.00"); form.Add("employee.hiredate", "12/25/2005"); form.Add("employee.homeaddress.street", "123 Nowhere Lane"); form.Add("employee.homeaddress.city", "Nowhere"); form.Add("employee.homeaddress.state", "AK"); form.Add("employee.homeaddress.zip", "99999"); form.Add("employee.workaddress.street", "1 Microsoft Way"); form.Add("employee.workaddress.city", "Redmond"); form.Add("employee.workaddress.state", "WA"); form.Add("employee.workaddress.zip", "98052"); form.Add("employee.dependents[0].id", "9"); form.Add("employee.dependents[0].name", "Son"); form.Add("employee.dependents[1].id", "8"); form.Add("employee.dependents[1].name", "Wife"); var binder = new DefaultCslaModelBinder(); var model = Employee.GetEmployee(1); var modelContext = new ModelBindingContext() { Model = model, ModelType = typeof(Employee), ModelName = "employee", ValueProvider = new ValueProviderDictionary(ctx) }; var result = binder.BindModel(ctx, modelContext); Employee o = (Employee)result; Assert.AreEqual(123456, o.ID); Assert.AreEqual("John", o.Name); Assert.AreEqual(45000m, o.Salary); Assert.AreEqual(new SmartDate("12/25/2005"), o.HireDate); Assert.AreEqual("123 Nowhere Lane", o.HomeAddress.Street); Assert.AreEqual("Nowhere", o.HomeAddress.City); Assert.AreEqual("AK", o.HomeAddress.State); Assert.AreEqual(99999, o.HomeAddress.Zip); Assert.IsNotNull(o.WorkAddress, "Work address should not be null."); Assert.AreEqual("1 Microsoft Way", o.WorkAddress.Street); Assert.AreEqual("Redmond", o.WorkAddress.City); Assert.AreEqual("WA", o.WorkAddress.State); Assert.AreEqual(98052, o.WorkAddress.Zip); Assert.AreEqual(9, o.Dependents[0].ID); Assert.AreEqual("Son", o.Dependents[0].Name); Assert.AreEqual(8, o.Dependents[1].ID); Assert.AreEqual("Wife", o.Dependents[1].Name); }
public void ModelStateShouldBeInvalidWhenBindToPropertyRaisedException() { var ctx = GetControllerContext(); var form = ctx.HttpContext.Request.Form; form.Add("id", "123456"); form.Add("UnauthorizedProperty", "Test"); var binder = new DefaultCslaModelBinder(); var model = Employee.GetEmployee(1); var modelContext = new ModelBindingContext() { Model = model, ModelType = typeof(Employee), ModelName = "employee", ValueProvider = new ValueProviderDictionary(ctx), FallbackToEmptyPrefix = true }; var result = binder.BindModel(ctx, modelContext); Employee o = (Employee)result; Assert.AreEqual(123456, o.ID); Assert.IsFalse(modelContext.ModelState.IsValid); }
public void ShouldTryToCallCslaFactoryWhenModelIsEmpty() { var mockInst = new Mock <IModelInstantiator>(); mockInst .Expect(i => i.CallFactoryMethod("Create", typeof(Employee), typeof(Employee), It.IsAny <object[]>())) .Returns(Employee.NewEmployee()) .Verifiable(); var ctx = GetControllerContext(); ctx.RouteData.Values["action"] = "Create"; var form = ctx.HttpContext.Request.Form; form.Add("employee.id", "123456"); form.Add("employee.Name", "John"); var binder = new DefaultCslaModelBinder(mockInst.Object); var modelContext = new ModelBindingContext() { Model = null, ModelType = typeof(Employee), ModelName = "employee", ValueProvider = new ValueProviderDictionary(ctx) }; var result = binder.BindModel(ctx, modelContext); Employee o = (Employee)result; Assert.AreEqual(123456, o.ID); Assert.AreEqual("John", o.Name); mockInst.VerifyAll(); }
public void ShouldMapBusinessCollection() { var mockInst = new Mock <IModelInstantiator>(); mockInst .Expect(i => i.CallFactoryMethod("Edit", typeof(DevEmployees), typeof(DevEmployees), It.IsAny <object[]>())) .Returns(DevEmployees.GetDevEmployees(1)) .Verifiable(); var ctx = GetControllerContext(); ctx.RouteData.Values["action"] = "Edit"; var form = ctx.HttpContext.Request.Form; form.Add("devemployees[0].id", "123456"); form.Add("devemployees[0].Name", "John"); form.Add("devemployees[1].id", "567890"); form.Add("devemployees[1].Name", "Bob"); var binder = new DefaultCslaModelBinder(mockInst.Object); var modelContext = new ModelBindingContext() { Model = null, ModelType = typeof(DevEmployees), ModelName = "devEmployees", ValueProvider = new ValueProviderDictionary(ctx) }; var result = binder.BindModel(ctx, modelContext); DevEmployees o = (DevEmployees)result; Assert.AreEqual(123456, o[0].ID); Assert.AreEqual("John", o[0].Name); Assert.AreEqual(567890, o[1].ID); Assert.AreEqual("Bob", o[1].Name); mockInst.VerifyAll(); }