public void Deserialize_WhenEmptyInput_JustInstantiateModel()
        {
            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model);
        }
        public void Deserialize_WithDepth0DecimalInput_FillsProperty()
        {
            formValues["company[revenue]"] = "17.3";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(17.3m, model.Revenue);
        }
        public void Deserialize_WithDepth0DatetimeInput_FillsProperty()
        {
            formValues["company[since]"] = "01/01/1950";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(new DateTime(1950, 1, 1), model.Since);
        }
        public void Deserialize_WithDepth0DecimalInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["company[revenue]"] = "17.3";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(17.3m, model.Revenue);
        }
        public void Deserialize_WithDepth0DatetimeInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["company[since]"] = "01/01/1950";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(new DateTime(1950, 1, 1), model.Since);
        }
        public void Deserialize_WithMultipleEntriesWithMultiplesFieldsForSameCollection_CreatesAndFillsCollection()
        {
            formValues["customer[permissions][id]"] = "10,11,12,13";
            formValues["customer[permissions][name]"] = "n1,n2,n3,n4";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model.Permissions);
            Assert.AreEqual(4, model.Permissions.Count);

            Assert.AreEqual(10, model.Permissions[0].Id);
            Assert.AreEqual("n1", model.Permissions[0].Name);

            Assert.AreEqual(11, model.Permissions[1].Id);
            Assert.AreEqual("n2", model.Permissions[1].Name);

            Assert.AreEqual(12, model.Permissions[2].Id);
            Assert.AreEqual("n3", model.Permissions[2].Name);

            Assert.AreEqual(13, model.Permissions[3].Id);
            Assert.AreEqual("n4", model.Permissions[3].Name);
        }
        public void Deserialize_WithDepth1StringInput_FillsProperty()
        {
            formValues["customer[address][city]"] = "kirkland";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model.Address);
            Assert.AreEqual("kirkland", model.Address.City);
        }
        public void Deserialize_WithDepth1IntForCollection_CreatesAndFillsCollection()
        {
            formValues["customer[permissions][id]"] = "10";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model.Permissions);
            Assert.AreEqual(1, model.Permissions.Count);
            Assert.AreEqual(10, model.Permissions[0].Id);
        }
        public void Deserialize_WithDepth1StringInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["customer[address][city]"] = "kirkland";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model.Address);
            Assert.AreEqual("kirkland", model.Address.City);
        }
        public void Deserialize_WithDepth0Int32Input_FillsProperty()
        {
            formValues["customer[age]"] = "32";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(32, model.Age);
        }
        public void Deserialize_WithDepth0GuidInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["company[id]"] = "6C8A7A2C-0E37-45D5-B1AF-56A714AB47D5";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(Guid.Parse("6C8A7A2C-0E37-45D5-B1AF-56A714AB47D5"), model.Id);
        }
        public void Deserialize_WithDepth0EnumInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["company[category]"] = "Industry";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(CompanyCategory.Industry, model.Category);
        }
        public void Deserialize_WithMultipleEntriesForSameCollection_CreatesAndFillsCollection()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["customer[permissions][id]"] = "10,11,12,13";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.IsNotNull(model.Permissions);
            Assert.AreEqual(4, model.Permissions.Count);
            Assert.AreEqual(10, model.Permissions[0].Id);
            Assert.AreEqual(11, model.Permissions[1].Id);
            Assert.AreEqual(12, model.Permissions[2].Id);
            Assert.AreEqual(13, model.Permissions[3].Id);
        }
        public void Deserialize_WithDepth0EnumInput_FillsProperty()
        {
            formValues["company[category]"] = "Industry";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(CompanyCategory.Industry, model.Category);
        }
        public void Deserialize_WithDepth0StringInput_FillsProperty()
        {
            formValues["customer[name]"] = "hammett";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual("hammett", model.Name);
        }
        public void Deserialize_WithDepth0GuidInput_FillsProperty()
        {
            formValues["company[id]"] = "6C8A7A2C-0E37-45D5-B1AF-56A714AB47D5";

            var serializer = new FormBasedSerializer<Company>() as IModelSerializer<Company>;
            var model = serializer.Deserialize("company", "", serializationContext, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual(Guid.Parse("6C8A7A2C-0E37-45D5-B1AF-56A714AB47D5"), model.Id);
        }
        public void Deserialize_WithDepth0StringInput_FillsProperty()
        {
            var ctx = new HttpContextStub();
            var form = ctx.RequestStub.Form;
            form["customer[name]"] = "hammett";

            var serializer = new FormBasedSerializer<Customer>() as IModelSerializer<Customer>;
            var model = serializer.Deserialize("customer", "", ctx.Request, new DataAnnotationsModelMetadataProvider());

            Assert.AreEqual("hammett", model.Name);
        }