Exemple #1
0
        public void IgnoreProperty()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonReportModel>(p => new PersonReportModel
            {
                Name    = $"{p.FirstName} {p.LastName}",
                Age     = TestHelpers.CalculateAge(p.BirthDate),
                Address = MappingOptions.Ignore()
            });

            var reportModel = mapperConfiguration.Convert <Person, PersonReportModel>(TestData.People.JohnSmith);

            Assert.IsNull(reportModel.Address);
            const string doNotChange   = "DO NOT CHANGE THIS";
            var          existingModel = new PersonReportModel
            {
                Name        = "Test",
                Address     = doNotChange,
                City        = "Test",
                PhoneNumber = "Test",
                Age         = 5
            };

            mapperConfiguration.MapData(TestData.People.JohnSmith, existingModel);
            Assert.AreEqual(doNotChange, existingModel.Address);
        }
        public void ChangeDestinationBeforeMapTest()
        {
            var mappingConfiguration = new MappingConfiguration();

            mappingConfiguration.CreateMapping <PersonFrontModel, Person>(
                f => new Person
            {
                PersonId  = MappingOptions.Ignore(),
                Timestamp = MappingOptions.Ignore(),
                FirstName = MappingOptions.Ignore()
            },
                s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                .DestinationNamingConvention(NamingConventionType.CamelCase)
                .BeforeMap((f, p) =>
            {
                if (p.PersonId == 0)
                {
                    p.PersonId = 10;
                }
                p.FirstName = "Brent";
            }));
            var frontModel = new PersonFrontModel();
            var newPerson  = mappingConfiguration.Convert(frontModel).To <Person>();

            Assert.AreEqual(10, newPerson.PersonId);
            Assert.AreEqual("Brent", newPerson.FirstName);
            var existingPerson = new Person {
                PersonId = 9
            };

            mappingConfiguration.MapData(frontModel, existingPerson);
            Assert.AreEqual(9, existingPerson.PersonId);
            Assert.AreEqual("Brent", existingPerson.FirstName);
        }
Exemple #3
0
        public void ImplicitTypeConvertionTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonViewModel>();
            var viewModel = mapperConfiguration.Convert(TestData.People.JohnSmith).To <PersonViewModel>();

            CheckViewModel(TestData.People.JohnSmith, viewModel);
        }
        public void NameConventionsConvertTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonFrontModel>(p => new PersonFrontModel(),
                                                                         s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                                                                         .DestinationNamingConvention(NamingConventionType.CamelCase));
            var frontEndModel = mapperConfiguration.Convert <Person, PersonFrontModel>(TestData.People.JohnSmith);

            CheckFrontModel(TestData.People.JohnSmith, frontEndModel);
        }
Exemple #5
0
        public void IgnoreToNullable()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonViewModel>(p => new PersonViewModel
            {
                PersonId = MappingOptions.Ignore(),
            });
            var viewModel = mapperConfiguration.Convert(TestData.People.JohnSmith).To <PersonViewModel>();

            Assert.IsNull(viewModel.PersonId);
        }
Exemple #6
0
        public void PrimitiveSourceTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <UserInfo, string, User>((u, p) => new User
            {
                Login    = u.Login,
                Email    = u.Email,
                Password = p
            });
            mapperConfiguration.CreateMapping <User, Person, UserInfo>((u, p) => new UserInfo
            {
                PersonName = $"{p.FirstName} {p.LastName}",
                Age        = TestHelpers.CalculateAge(p.BirthDate),
            });
            var password   = "******";
            var userInfo   = mapperConfiguration.Convert <User, Person, UserInfo>(TestData.Users.JohnUser, TestData.People.JohnSmith);
            var resultUser = mapperConfiguration.Convert <UserInfo, string, User>(userInfo, password);

            Assert.AreEqual(password, resultUser.Password);
        }
        public void AbbrevationTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <CompanyData, CompanyDataFrontModel>(c => new CompanyDataFrontModel(),
                                                                                   s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                                                                                   .DestinationNamingConvention(NamingConventionType.CamelCase));

            var frontEndModel = mapperConfiguration.Convert <CompanyData, CompanyDataFrontModel>(TestData.CompanyData.SomeCompanyData);

            CheckFrontModel(TestData.CompanyData.SomeCompanyData, frontEndModel);
        }
Exemple #8
0
        public void ConditionalIgnore()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonReportModel>(p => new PersonReportModel
            {
                Name        = p.FirstName != "Brent" ? "Not Brent" : "Brent",
                Age         = p.FirstName == "Brent" ? 6 : 5,
                Address     = p.FirstName == "John" ? p.Address : MappingOptions.Ignore(),
                City        = p.FirstName == "John" ? MappingOptions.Ignore() : p.City,
                PhoneNumber = p.FirstName != "John" ? MappingOptions.Ignore() : p.PhoneNumber
            });
            mapperConfiguration.CreateMapping <Person, Person>(p => new Person());
            var reportModel = mapperConfiguration.Convert <Person, PersonReportModel>(TestData.People.JohnSmith);

            Assert.AreEqual(TestData.People.JohnSmith.Address, reportModel.Address);
            Assert.IsNull(reportModel.City);
            Assert.AreEqual(TestData.People.JohnSmith.PhoneNumber, reportModel.PhoneNumber);
            Assert.AreEqual("Not Brent", reportModel.Name);
            Assert.AreEqual(5, reportModel.Age);

            const string doNotChange = "DO NOT CHANGE THIS";

            var existingModel = new PersonReportModel
            {
                Name        = "Brent",
                Address     = doNotChange,
                PhoneNumber = doNotChange,
                City        = "Test",
                Age         = 5
            };
            var brent = mapperConfiguration.Convert <Person, Person>(TestData.People.JohnSmith);

            brent.FirstName = "Brent";
            mapperConfiguration.MapData(brent, existingModel);
            Assert.AreEqual(doNotChange, existingModel.Address);
            Assert.AreEqual(doNotChange, existingModel.PhoneNumber);
            Assert.AreEqual(brent.City, existingModel.City);
            Assert.AreEqual(6, existingModel.Age);
        }
Exemple #9
0
        public void MultipleSourcesTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <User, Person, UserInfo>((u, p) => new UserInfo
            {
                PersonName = $"{p.FirstName} {p.LastName}",
                Age        = TestHelpers.CalculateAge(p.BirthDate),
            });

            var resultUser = mapperConfiguration.Convert <User, Person, UserInfo>(TestData.Users.JohnUser, TestData.People.JohnSmith);

            CheckUserInfo(TestData.Users.JohnUser, TestData.People.JohnSmith, resultUser);
        }
Exemple #10
0
        public void MapModelWithCtor()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonWithCtor>(p => new PersonWithCtor(p.FirstName, p.LastName, p.PersonId)
            {
                StreetAddress = p.Address,
            });

            var modelWithCtor = mapperConfiguration.Convert <Person, PersonWithCtor>(TestData.People.JohnSmith);

            CheckPersonWithCtor(TestData.People.JohnSmith, modelWithCtor);

            var existingModelWithCtor = new PersonWithCtor(TestData.People.JohnSmith.FirstName,
                                                           TestData.People.JohnSmith.LastName, TestData.People.JohnSmith.PersonId);

            mapperConfiguration.MapData(TestData.People.JohnSmith, existingModelWithCtor);
            CheckPersonWithCtor(TestData.People.JohnSmith, existingModelWithCtor);
        }
Exemple #11
0
        public void BuildFromScratch()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <string, string, string, int, UserInfo>((login, email, phoneNumber, age) => new UserInfo
            {
                Login       = login,
                Email       = email,
                Age         = age,
                PhoneNumber = phoneNumber,
                PersonName  = MappingOptions.Ignore()
            });
            var johnUser       = TestData.Users.JohnUser;
            var johnSmith      = TestData.People.JohnSmith;
            var resultUserInfo = mapperConfiguration.Convert <string, string, string, int, UserInfo>(johnUser.Login,
                                                                                                     johnUser.Email, johnSmith.PhoneNumber, TestHelpers.CalculateAge(johnSmith.BirthDate));

            CheckUserInfo(johnUser, johnSmith, resultUserInfo, true);
        }
Exemple #12
0
        public void MapSimpleModel()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonReportModel>(p => new PersonReportModel
            {
                Name = $"{p.FirstName} {p.LastName}",
                Age  = TestHelpers.CalculateAge(p.BirthDate),
            });

            var reportModel = mapperConfiguration.Convert <Person, PersonReportModel>(TestData.People.JohnSmith);

            CheckPersonReportModel(TestData.People.JohnSmith, reportModel);

            var existingReportModel = new PersonReportModel();

            mapperConfiguration.MapData(TestData.People.JohnSmith, existingReportModel);
            CheckPersonReportModel(TestData.People.JohnSmith, existingReportModel);
        }
Exemple #13
0
        public void UserOverrides()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonReportModel>(p => new PersonReportModel
            {
                Name        = $"{p.FirstName} {p.LastName}",
                Address     = $"Address: {p.Address}",
                City        = $"City: {p.City}",
                PhoneNumber = $"Phone number: {p.PhoneNumber}",
                Age         = TestHelpers.CalculateAge(p.BirthDate),
            });

            var johnSmith   = TestData.People.JohnSmith;
            var reportModel = mapperConfiguration.Convert(johnSmith).To <PersonReportModel>();

            Assert.AreEqual($"Address: {johnSmith.Address}", reportModel.Address);
            Assert.AreEqual($"City: {johnSmith.City}", reportModel.City);
            Assert.AreEqual($"Phone number: {johnSmith.PhoneNumber}", reportModel.PhoneNumber);
        }
Exemple #14
0
        public void CollisionsTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Order, OrderPosition, StoreItem, SinglePositionOrder>(
                (o, p, i) => new SinglePositionOrder(), c => c.CollisionBehavior(SelectSourceCollisionBehavior.ChooseAny));

            var order         = TestData.Orders.BrentOrdersPencil;
            var orderPosition = TestData.OrderPositions.BrentOrdersSinglePencil;
            var storeItem     = TestData.StoreItems.Pencil;
            var resultOrder   = mapperConfiguration.Convert(order, orderPosition, storeItem)
                                .To <SinglePositionOrder>();

            Assert.AreEqual(order.Id, resultOrder.Id);
            Assert.AreEqual(order.Address, resultOrder.Address);
            Assert.AreEqual(orderPosition.Amount, resultOrder.Amount);
            Assert.AreEqual(storeItem.Name, resultOrder.Name);
            Assert.AreEqual(order.OrderNumber, resultOrder.OrderNumber);
            Assert.AreEqual(order.Recipient, resultOrder.Recipient);
        }
Exemple #15
0
        public void IsConstructionFlag()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <PersonFrontModel, Person>(
                f => new Person
            {
                Height    = MappingOptions.IsConstruction() ? 6 : 7,
                Timestamp = MappingOptions.Ignore()
            },
                s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                .DestinationNamingConvention(NamingConventionType.CamelCase));
            var frontModel      = new PersonFrontModel();
            var convertedPerson = mapperConfiguration.Convert(frontModel).To <Person>();
            var existingPerson  = new Person();

            mapperConfiguration.MapData(frontModel, existingPerson);
            Assert.AreEqual(6, convertedPerson.Height);
            Assert.AreEqual(7, existingPerson.Height);
        }
Exemple #16
0
        public void IgnoreTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <User, Person, UserWeirdModel>(
                (u, p) => new UserWeirdModel
            {
                home_address   = p.Address,
                johns_password = p.FirstName == "John" ? u.Password : MappingOptions.Ignore(),
                x_some_field   = MappingOptions.Ignore()
            },
                s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                .DestinationNamingConvention(NamingConventionType.UnderscoreSeparated, "s_", "x_"));
            var johnUser = mapperConfiguration.Convert(TestData.Users.JohnUser, TestData.People.JohnSmith).To <UserWeirdModel>();

            CheckUserWierdModel(TestData.Users.JohnUser, TestData.People.JohnSmith, johnUser);
            var brentUser = johnUser;

            mapperConfiguration.MapData(TestData.Users.BrentUser, TestData.People.BrentJohnson, brentUser);
            CheckUserWierdModel(TestData.Users.BrentUser, TestData.People.BrentJohnson, brentUser);
        }
        public void PrefixesTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <Person, PersonWeirdModel>(p => new PersonWeirdModel(),
                                                                         s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                                                                         .DestinationNamingConvention(NamingConventionType.UnderscoreSeparated, "s_", "i_", "copy_"));

            var otherModel = mapperConfiguration.Convert <Person, PersonWeirdModel>(TestData.People.JohnSmith);

            CheckWeirdModel(TestData.People.JohnSmith, otherModel);
            mapperConfiguration.CreateMapping <PersonWeirdModel, Person>(p => new Person(),
                                                                         s => s.UnresolvedBehavior(UnresolvedPropertyBehavior.Ignore)
                                                                         .CollisionBehavior(SelectSourceCollisionBehavior.ChooseAny)
                                                                         .SourceNamingConvention(NamingConventionType.UnderscoreSeparated, "s_", "i_", "copy_")
                                                                         .DestinationNamingConvention(NamingConventionType.CamelCase));
            var newPerson = new Person();

            mapperConfiguration.MapData(otherModel, newPerson);
            CheckFromWeirdModel(otherModel, newPerson);
        }
Exemple #18
0
        public void IsConstructionWithIgnoreTest()
        {
            var mapperConfiguration = new MappingConfiguration();

            mapperConfiguration.CreateMapping <PersonFrontModel, Person>(
                f => new Person
            {
                PersonId  = MappingOptions.IsConstruction() ? 10 : MappingOptions.Ignore(),
                Timestamp = MappingOptions.Ignore()
            },
                s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                .DestinationNamingConvention(NamingConventionType.CamelCase));

            var frontModel      = new PersonFrontModel();
            var convertedPerson = mapperConfiguration.Convert(frontModel).To <Person>();
            var existingPerson  = new Person {
                PersonId = 9
            };

            mapperConfiguration.MapData(frontModel, existingPerson);
            Assert.AreEqual(10, convertedPerson.PersonId);
            Assert.AreEqual(9, existingPerson.PersonId);
        }
        public void AfterMapWithMultipleSources()
        {
            var mappingConfiguration = new MappingConfiguration();

            mappingConfiguration.CreateMapping <PersonFrontModel, int, Person>(
                (f, newId) => new Person
            {
                PersonId  = MappingOptions.Ignore(),
                Timestamp = MappingOptions.Ignore(),
                FirstName = MappingOptions.Ignore(),
                LastName  = "Johnson"
            },
                s => s.SourceNamingConvention(NamingConventionType.CamelCase)
                .DestinationNamingConvention(NamingConventionType.CamelCase)
                .AfterMap((f, newId, p) =>
            {
                if (p.PersonId == 0)
                {
                    p.PersonId = newId;
                }
                p.FirstName = "Brent";
                p.LastName  = "Smith";
            }));
            var frontModel = new PersonFrontModel();
            var newPerson  = mappingConfiguration.Convert(frontModel, 10).To <Person>();

            Assert.AreEqual(10, newPerson.PersonId);
            Assert.AreEqual("Brent", newPerson.FirstName);
            Assert.AreEqual("Smith", newPerson.LastName);
            var existingPerson = new Person {
                PersonId = 9
            };

            mappingConfiguration.MapData(frontModel, 10, existingPerson);
            Assert.AreEqual(9, existingPerson.PersonId);
            Assert.AreEqual("Smith", existingPerson.LastName);
        }