public void can_work_on_different_collection_type_list() { var source = new SourceProduct { Id = 10, Variants = new List <SourceProductVariant> { new SourceProductVariant { Id = 1, Name = "variant 1" }, new SourceProductVariant { Id = 2, Name = "variant 2" } } }; var mapper = new DefaultObjectMapper(); var context = new MappingContext(); context.Includes.Add("Variants"); var target = mapper.Map(source, new TargetProduct_IListVariants(), typeof(SourceProduct), typeof(TargetProduct_IListVariants), null, context) as TargetProduct_IListVariants; Assert.Equal(10, target.Id); Assert.NotNull(target.Variants); Assert.Equal(2, target.Variants.Count); Assert.Equal(1, target.Variants.First().Id); Assert.Equal("variant 1", target.Variants.First().Name); Assert.Equal(2, target.Variants.Skip(1).First().Id); Assert.Equal("variant 2", target.Variants.Skip(1).First().Name); }
public void can_customize_nested_object_mapping() { var source = new SourceProduct { Id = 1, Brand = new SourceBrand { Name = "Nike" } }; var mapper = new DefaultObjectMapper(); var context = new MappingContext(); context.Includes.Add("Brand"); mapper.GetMapper = (sourceType, targetType) => { if (sourceType == typeof(SourceBrand)) { return(new BrandMapper()); } return(mapper); }; var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal("Nike (Customized)", target.Brand.Name); }
public void can_map_multi_level_nested_objects() { var source = new SourceOrderItem { Id = 1, Product = new SourceProduct { Id = 11, Name = "Product 1", Brand = new SourceBrand { Id = 21, Name = "Brand 1" } } }; var mapper = new DefaultObjectMapper(); var includes = new IncludeCollection(); includes.Add("Product.Brand"); var context = new MappingContext(includes); var target = mapper.Map(source, new TargetOrderItem(), typeof(SourceOrderItem), typeof(TargetOrderItem), null, context) as TargetOrderItem; Assert.Equal(1, target.Id); Assert.NotNull(target.Product); Assert.Equal(11, target.Product.Id); Assert.NotNull(target.Product.Brand); Assert.Equal(21, target.Product.Brand.Id); Assert.Equal("Brand 1", target.Product.Brand.Name); }
public void Can_Map_Single_Object() { var mapper = new DefaultObjectMapper(); var src = new Source { Value = 2 }; var trgt = mapper.Map <Source, Target>(src); Assert.AreEqual(src.Value, trgt.Value); }
public void Can_Inject_Enumerations() { var mapper = new DefaultObjectMapper(); var src = new[] { new Source { Value = 2 } }; var trgt = new[] { new Target() }; mapper.InjectAll(src, trgt); Assert.AreEqual(src[0].Value, trgt[0].Value); }
public void Can_Inject_Single_Object() { var mapper = new DefaultObjectMapper(); var src = new Source { Value = 2 }; var trgt = new Target(); mapper.Inject(src, trgt); Assert.AreEqual(src.Value, trgt.Value); }
public void Can_Use_Custom_Bindings() { var mapper = new DefaultObjectMapper( bindingFactory: new DoublesValueBindingFactory() ); var src = new Source { Value = 2 }; var trgt = mapper.Map <Source, Target>(src); Assert.AreEqual(src.Value * 2, trgt.Value); }
public void Can_Use_Custom_ObjectFactory() { var mapper = new DefaultObjectMapper( objectFactory: new TargetSubClassFactory() ); var src = new Source { Value = 2 }; var trgt = mapper.Map <Source, Target>(src); Assert.IsInstanceOfType(trgt, typeof(TargetSubClass)); }
public void Can_Map_Enumerations() { var mapper = new DefaultObjectMapper(); var src = new[] { new Source { Value = 2 } }; var trgt = mapper.MapAll <Source, Target>(src) .ToArray(); Assert.AreEqual(src.Length, trgt.Length); Assert.AreEqual(src[0].Value, trgt[0].Value); }
public void can_map_between_dictionaries() { var target = new DefaultObjectMapper().Map(new SourceBrand { CustomFields = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }, new TargetBrand(), null, new MappingContext(new IncludeCollection(new[] { "CustomFields" }))) as TargetBrand; Assert.Equal(2, target.CustomFields.Count); Assert.Equal("value1", target.CustomFields["key1"]); Assert.Equal("value2", target.CustomFields["key2"]); }
public void should_ignore_nested_objects_bydefault() { var source = new SourceProduct { Id = 5, Name = "Product 1", Brand = new SourceBrand { Id = 10, Name = "Nike" } }; var mapper = new DefaultObjectMapper(); var context = new MappingContext(); var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal("Product 1", target.Name); Assert.Null(target.Brand); }
public void can_handle_null_nested_object() { var source = new SourceProduct { Id = 1024, Name = "1024 Product" }; var mapper = new DefaultObjectMapper(); var includes = new IncludeCollection(); includes.Add("Brand"); var context = new MappingContext(new LocalApiContext(new ApiContext(), null), includes); var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal(1024, target.Id); Assert.Equal("1024 Product", target.Name); Assert.Null(target.Brand); }
public void work_on_simple_properties() { var mapper = new DefaultObjectMapper(); var source = new SourceProduct { Id = 5, Name = "Product name", Price = 150m, BrandId = 10, Type = SourceProductType.Type2 }; var context = new MappingContext(); var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal(5, target.Id); Assert.Equal("Product name", target.Name); Assert.Equal(150m, target.Price); Assert.Equal(TargetProductType.Type2, target.Type); }
public void treat_name_property_as_key_if_source_type_is_not_dictionary() { var target = new DefaultObjectMapper().Map(new SourceBrand2 { CustomFields = new List <BrandField> { new BrandField { Name = "name1", Value = "value1" }, new BrandField { Name = "name2", Value = "value2" }, new BrandField { Name = "name3", Value = "value3" } } }, new TargetBrand(), null, new MappingContext(new IncludeCollection(new[] { "CustomFields" }))) as TargetBrand; Assert.Equal(3, target.CustomFields.Count); Assert.Equal("value1", target.CustomFields["name1"]); Assert.Equal("value2", target.CustomFields["name2"]); Assert.Equal("value3", target.CustomFields["name3"]); }
public void can_map_one_level_nested_object() { var source = new SourceProduct { Id = 5, Name = "Product name", Brand = new SourceBrand { Id = 10, Name = "Nike" } }; var mapper = new DefaultObjectMapper(); var includes = new IncludeCollection(); includes.Add("Brand"); var context = new MappingContext(includes); var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.NotNull(target.Brand); Assert.Equal(10, target.Brand.Id); Assert.Equal("Nike", target.Brand.Name); }
public void ignore_collections_bydefault() { var source = new SourceProduct { Id = 10, Variants = new List <SourceProductVariant> { new SourceProductVariant { Id = 1, Name = "variant 1" }, new SourceProductVariant { Id = 2, Name = "variant 2" } } }; var mapper = new DefaultObjectMapper(); var context = new MappingContext(); var target = mapper.Map(source, new TargetProduct(), typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal(10, target.Id); Assert.Null(target.Variants); }
public void can_customize_collection_element_mapping() { var source = new SourceBrandCollection { Brands = new List <SourceBrand> { new SourceBrand { Name = "Nike" }, new SourceBrand { Name = "Puma" } } }; var mapper = new DefaultObjectMapper(); mapper.GetMapper = (sourceType, targetType) => { if (sourceType == typeof(SourceBrand)) { return(new BrandMapper()); } return(mapper); }; var context = new MappingContext(new LocalApiContext(new ApiContext(), null)); context.Includes.Add("Brands"); var target = mapper.Map(source, new TargetBrandCollection(), typeof(SourceBrandCollection), typeof(TargetBrandCollection), null, context) as TargetBrandCollection; Assert.Equal(2, target.Brands.Count); Assert.Equal("Nike (Customized)", target.Brands.First().Name); Assert.Equal("Puma (Customized)", target.Brands.Skip(1).First().Name); }
public void should_replace_target_collections() { var source = new SourceProduct { Id = 10, Variants = new List <SourceProductVariant> { new SourceProductVariant { Id = 1, Name = "variant 1" }, new SourceProductVariant { Id = 2, Name = "variant 2" } } }; var mapper = new DefaultObjectMapper(); var context = new MappingContext(); context.Includes.Add("Variants"); var target = new TargetProduct(); target.Variants = new List <TargetProductVariant>(); target.Variants.Add(new TargetProductVariant { Id = 3, Name = "variant 3" }); target = mapper.Map(source, target, typeof(SourceProduct), typeof(TargetProduct), null, context) as TargetProduct; Assert.Equal(2, target.Variants.Count); Assert.Equal(1, target.Variants.First().Id); Assert.Equal("variant 1", target.Variants.First().Name); Assert.Equal(2, target.Variants.Skip(1).First().Id); Assert.Equal("variant 2", target.Variants.Skip(1).First().Name); }