public void ThrowsForUnmatchedSource()
        {
            var mapperSpec = FluentMapper
                             .ThatMaps <SimpleTarget>().From <SourceWithExtraDoubleC>();

            Assert.That(() => mapperSpec.Create(), Throws.Exception);

            try
            {
                mapperSpec.Create();
            }
            catch (Exception ex)
            {
                Assert.AreEqual(ex.Message, "Source Double SourceWithExtraDoubleC.C is unmatched.");
            }
        }
        public void ThrowsForMismatchedType()
        {
            var mapperSpec = FluentMapper
                             .ThatMaps <TargetWithExtraStringC>().From <SourceWithExtraDoubleC>();

            Assert.That(() => mapperSpec.Create(), Throws.Exception);

            try
            {
                mapperSpec.Create();
            }
            catch (Exception ex)
            {
                Assert.AreEqual(ex.Message, "Cannot map [String TargetWithExtraStringC.C] from [Double SourceWithExtraDoubleC.C].");
            }
        }
        public void ThrowsForUnmatchedTarget()
        {
            var mapperSpec = FluentMapper
                             .ThatMaps <TargetWithExtraStringC>().From <SimpleSource>();

            Assert.That(() => mapperSpec.Create(), Throws.Exception);

            try
            {
                mapperSpec.Create();
            }
            catch (Exception ex)
            {
                Assert.AreEqual(ex.Message, "Target String TargetWithExtraStringC.C is unmatched.");
            }
        }
        public void TestTypeMapTypeLevelResolverWithAttributes()
        {
            // Setup
            var resolver = new TypeMapTypeLevelResolver();

            FluentMapper
            .Type <Guid>()
            .DbType(DbType.AnsiStringFixedLength);

            // Act
            var result   = resolver.Resolve(typeof(Guid));
            var expected = DbType.AnsiStringFixedLength;

            // Assert
            Assert.AreEqual(expected, result);
        }
示例#5
0
        public void FluentMapper_GetColumnInfo_Maps_ColumnName_To_Value_Provided()
        {
            // Arrange
            var mapper = new FluentMapper <Dog>(Constants.TABLENAME_Prefix);

            mapper.Property(d => d.Name, Constants.COLUMNNAME_Name);

            var personType     = typeof(Dog);
            var personProperty = personType.GetProperty(Constants.COLUMNNAME_Name);

            // Act
            var ci = mapper.GetColumnInfo(personProperty);

            // Assert
            Assert.AreEqual(Constants.COLUMNNAME_Name, ci.ColumnName);
        }
        public void ContextualConstructor()
        {
            var ctor = new Mock <Func <StringifyContext, TargetWithExtraStringC> >(MockBehavior.Strict);

            ctor.Setup(x => x(It.IsAny <StringifyContext>())).Returns(() => new TargetWithExtraStringC());

            var mapper = FluentMapper
                         .ThatMaps <SimpleTarget>().From <SimpleSource>()
                         .UsingContext <StringifyContext>()
                         .WithConstructor(ctx => ctor.Object(ctx))
                         .Create();

            mapper.Map(new SimpleSource(), new StringifyContext());

            ctor.Verify(x => x(It.IsAny <StringifyContext>()));
        }
示例#7
0
        public static void Carregar()
        {
            if (_carregado)
            {
                return;
            }

            FluentMapper.Initialize(config =>
            {
                config.AddMap(new ClienteMap());
                config.AddMap(new IngredienteMap());
                config.ForDommel();
            });

            _carregado = true;
        }
示例#8
0
        public void TestIdentityResolverWithKeyAttributeAndMappings()
        {
            // Setup
            var resolver = new IdentityResolver();

            FluentMapper
            .Entity <EntityModelWithKeyAttribute>()
            .Primary(e => e.SecondaryId);

            // Act
            var result   = resolver.Resolve(typeof(EntityModelWithKeyAttribute)).GetMappedName();
            var expected = "PrimaryId";

            // Assert
            Assert.AreEqual(expected, result);
        }
示例#9
0
        public void EntityMapsCustomIdAsKey()
        {
            PreTest();

            FluentMapper.Initialize(c => c.AddMap(new MapWithCustomIdPropertyMap()));

            var type           = typeof(CustomIdEntity);
            var keyResolver    = new Dommel.Resolvers.DommelKeyPropertyResolver();
            var columnResolver = new Dommel.Resolvers.DommelColumnNameResolver();

            var keys       = keyResolver.ResolveKeyProperties(type);
            var columnName = columnResolver.ResolveColumnName(keys.Single().Property);

            Assert.Single(keys);
            Assert.Equal("customid", columnName);
        }
 public static void Register()
 {
     FluentMapper.Initialize(config =>
     {
         config.AddMap(new UsuarioMap());
         config.AddMap(new EnderecoMap());
         config.AddMap(new FinanceiroMap());
         config.AddMap(new ClienteMap());
         config.AddMap(new EventoMap());
         config.AddMap(new ContratoMap());
         config.AddMap(new ParcelaMap());
         config.AddMap(new FuncionarioMap());
         config.AddMap(new CrmMap());
         config.ForDommel();
     });
 }
        public void TestPropertyHandlerTypeLevelResolverWithAttributes()
        {
            // Setup
            var resolver = new PropertyHandlerTypeLevelResolver();

            FluentMapper
            .Type <int>()
            .PropertyHandler <IntPropertyHandler>();

            // Act
            var result   = resolver.Resolve(typeof(int))?.GetType();
            var expected = typeof(IntPropertyHandler);

            // Assert
            Assert.AreEqual(expected, result);
        }
        public void WithConstructor()
        {
            var mockCtor = new Mock <Func <SimpleTarget> >(MockBehavior.Strict);
            var target   = new SimpleTarget();

            mockCtor.Setup(x => x()).Returns(target);

            var mapper = FluentMapper
                         .ThatMaps <SimpleTarget>().From <SimpleSource>()
                         .WithConstructor(mockCtor.Object)
                         .Create();

            var result = mapper.Map(new SimpleSource());

            mockCtor.Verify(x => x(), Times.Once());
        }
        public void TestPropertyMappedNameResolverWithColumnAttributeAndMappings()
        {
            // Setup
            var resolver = new PropertyMappedNameResolver();

            FluentMapper
            .Entity <EntityModelWithColumnAttribute>()
            .Column(e => e.Id, "[ColumnId]");

            // Act
            var result   = resolver.Resolve(typeof(EntityModelWithColumnAttribute).GetProperty("Id"), null);
            var expected = "[PrimaryId]";

            // Assert
            Assert.AreEqual(expected, result);
        }
示例#14
0
        public void FluentMapper_GetColumnInfo_Does_Not_Map_ColumnName_To_Attribute()
        {
            //Arrange
            var mapper = new FluentMapper <Person>(Constants.TABLENAME_Prefix);

            mapper.Property(d => d.Name, Constants.COLUMNNAME_Name);

            var personType     = typeof(Person);
            var personProperty = personType.GetProperty(Constants.COLUMNNAME_Name);

            //Act
            var ci = mapper.GetColumnInfo(personProperty);

            //Assert
            Assert.AreNotEqual(Constants.COLUMNNAME_PersonName, ci.ColumnName);
        }
        public void DerivedProperties()
        {
            // Arrange
            FluentMapper.Initialize(c => c.AddConvention <DerivedConvention>().ForEntity <DerivedTestEntity>());
            var typeMap = SqlMapper.GetTypeMap(typeof(DerivedTestEntity));

            // Act
            var colName = typeMap.GetMember("colName");
            var colId   = typeMap.GetMember("colId");

            //Assert
            Assert.NotNull(colName);
            Assert.NotNull(colId);
            Assert.Equal(typeof(DerivedTestEntity).GetProperty(nameof(DerivedTestEntity.Name)), colName.Property);
            Assert.Equal(typeof(DerivedTestEntity).GetProperty(nameof(TestEntity.Id)), colId.Property);
        }
        public void NullableProperties()
        {
            // Arrange
            FluentMapper.Initialize(c => c.AddConvention <NullableConvention>().ForEntity <TestEntity>());
            var typeMap = SqlMapper.GetTypeMap(typeof(TestEntity));

            // Act
            var colValue        = typeMap.GetMember("intId");
            var colValueNotNull = typeMap.GetMember("intOtherId");

            //Assert
            Assert.NotNull(colValue);
            Assert.NotNull(colValueNotNull);
            Assert.Equal(typeof(TestEntity).GetProperty(nameof(TestEntity.Id)), colValue.Property);
            Assert.Equal(typeof(TestEntity).GetProperty(nameof(TestEntity.OtherId)), colValueNotNull.Property);
        }
 public static void Map()
 {
     if (mapped)
     {
         return;
     }
     FluentMapper.Initialize(config =>
     {
         mapped = true;
         config.AddMap(new ProjectMapper());
         config.AddMap(new BuyerMapper());
         config.AddMap(new ShopMapper());
         config.AddMap(new SupplierMapper());
         config.AddMap(new ConnectionMapper());
     });
 }
示例#18
0
        public static IServiceCollection AddInfrastructure(this IServiceCollection collection)
        {
            FluentMapper.Initialize(
                config =>
            {
                config.AddMap(new DataWithVersionMap());
                config.AddMap(new OrderComponentMap());
            });

            SqlMapper.AddTypeHandler(new JObjectTypeHandler());
            NpgsqlConnection.GlobalTypeMapper.UseJsonNet(jsonbClrTypes: new Type[] { typeof(JObject) });
            collection.AddScoped <IEventDataLayer, EventDataLayer>();
            collection.AddSingleton <IDatabaseConnectionFactory, DatabaseConnectionFactory>();

            return(collection);
        }
示例#19
0
        public static void RegisterDapperMapper()
        {
            FluentMapper.Initialize(config =>
            {
                config.AddMap(new SegmentMap());
                config.AddMap(new CountryMap());

                config.ForDommel();
            });

            SqlMapperExtensions.TableNameMapper = (type) =>
            {
                // do something here to pluralize the name of the type
                return(type.Name);
            };
        }
        public void ContextRetainedAfterIgnore()
        {
            var mapper = FluentMapper
                         .ThatMaps <TargetWithExtraStringC>().From <SourceWithExtraDoubleC>()
                         .UsingContext <StringifyContext>()
                         .ThatSets(x => x.C).From((src, ctx) => ctx.ArbitraryMethod(src.C))
                         .IgnoringSourceProperty(x => x.A)
                         .IgnoringTargetProperty(x => x.A)
                         .Create();

            var source = new SourceWithExtraDoubleC();
            var result = mapper.Map(source, new StringifyContext());

            Assert.That(result.A, Is.Null);
            Assert.That(result.C, Is.EqualTo("4.2"));
        }
示例#21
0
        /// <summary>
        /// Configers Dapper to use your conventions when handling the database
        /// </summary>
        private static void ConfigureDapper()
        {
            FluentMapper.Initialize(config =>
            {
                config
                .AddConvention <PropertyTransformConvention>()
                .ForEntity <PeriodEntry>()
                .ForEntity <PropertyValuePair>()
                .ForEntity <Profile>();
            });

            SqlMapper.RemoveTypeMap(typeof(DateTime));
            SqlMapper.RemoveTypeMap(typeof(TimeSpan));
            SqlMapper.AddTypeHandler(new DateTimeHandler());
            SqlMapper.AddTypeHandler(new TimeSpanHandler());
        }
        public DapperRepositoryBase(IConfiguration configuration)
        {
            _configuration = configuration;

            if (FluentMapper.EntityMaps.IsEmpty)
            {
                FluentMapper.Initialize(c =>
                {
                    c.AddMap(new BookDapperMap());
                    c.AddMap(new AuthorDapperMap());
                    c.ForDommel();
                });
            }

            conn = new SqlConnection(_configuration.GetConnectionString("DefaultConnection"));
        }
示例#23
0
        public void ArquivoComMapeamentoCorreto()
        {
            FluentMapper.Initialize(folderPath, fileName, c =>
            {
                c.AddMap(new ArquivoModeloMap());
                c.AddFromDataAnnotations <HeaderDoArquivo>(typeof(HeaderDoArquivo));
            });

            var arquivo = Builder <HeaderDoArquivo> .CreateNew().Build();

            FluentMapper.Write(arquivo);

            var path = Path.Combine(folderPath, fileName);

            Assert.IsTrue(Directory.Exists(folderPath) && File.Exists(path));
        }
示例#24
0
        public void FluentMapper_GetColumnInfo_Returns_ColumnInfo()
        {
            // Arrange
            var mapper = new FluentMapper <Dog>(Constants.TABLENAME_Prefix);

            mapper.Property(d => d.Name, Constants.COLUMNNAME_Name);

            var dogType     = typeof(Dog);
            var dogProperty = dogType.GetProperty(Constants.COLUMNNAME_Name);

            // Act
            var ci = mapper.GetColumnInfo(dogProperty);

            // Assert
            Assert.IsInstanceOf <ColumnInfo>(ci);
        }
示例#25
0
        public void ShouldMapEntitiesInAssembly()
        {
            PreTest();

            // Arrange & Act
            FluentMapper.Initialize(c => c.AddConvention <TestConvention>().ForEntitiesInAssembly(typeof(ConventionTests).GetTypeInfo().Assembly));

            // Assert
            var conventions = FluentMapper.TypeConventions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

            Assert.NotEmpty(conventions);
            Assert.True(conventions.ContainsKey(typeof(TestEntity)));
            var map = conventions[typeof(TestEntity)];

            Assert.True(map[0] is TestConvention);
        }
 public static void Register()
 {
     FluentMapper.Initialize(config =>
     {
         config.AddMap(new LoginDapperMap());
         config.AddMap(new AddressDapperMap());
         config.AddMap(new ContactDapperMap());
         config.AddMap(new DoctorDapperMap());
         config.AddMap(new SecretaryDapperMap());
         config.AddMap(new PatientDapperMap());
         config.AddMap(new ConvenioDapperMap());
         config.AddMap(new ConsultaDapperMap());
         config.AddMap(new MaterialDapperMap());
         config.ForDommel();
     });
 }
示例#27
0
 private static void DatabaseColumnsMapping()
 {
     FluentMapper.Initialize(config =>
     {
         config.AddMap(new MatchMap());
         config.AddMap(new TeamMap());
         config.AddMap(new PlayerMap());
         config.AddMap(new ScrapingInformationMap());
         config.AddMap(new MetricMap());
         config.AddMap(new PlayerHeadToHeadMap());
         config.AddMap(new PlayerOverUnderMap());
         config.AddMap(new SportMap());
         config.AddMap(new ProviderMap());
         config.AddMap(new TempTableToTestMap());
     });
 }
示例#28
0
        public void ListOfEmployeesWithTeritories() //2.2
        {
            FluentMapper.Initialize(config =>
            {
                config.AddMap(new EmployeeMap());
            });

            List <Employee> employees;

            using (var db = new SqlConnection(this.connectionString))
            {
                employees = db.Query <Employee>("SELECT * FROM Employees").ToList();
                foreach (var employee in employees)
                {
                    var emplTerritories =
                        db.Query <EmployeeTerritory>(
                            "SELECT * FROM EmployeeTerritories WHERE EmployeeID = employeeId", new { employeeId = employee.Id });
                    employee.Territories = new List <Territory>();
                    foreach (var id in emplTerritories)
                    {
                        var t =
                            db.Query <Territory>("SELECT * FROM Territories WHERE TerritoryID = territoryId", new { territoryId = id.TerritoryID }).FirstOrDefault();
                        employee.Territories.Add(t);
                    }
                }
            }

            var actual = employees.FirstOrDefault(e => e.Id == 3);

            var expected = new Employee()
            {
                Id          = 3,
                LastName    = "Leverling",
                FirstName   = "Janet",
                Territories = new List <Territory>()
                {
                    new Territory()
                }
            };

            Assert.IsNotNull(actual);
            Assert.IsNotNull(actual.Territories);
            Assert.AreEqual(49, actual.Territories.Count);
            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(expected.FirstName, actual.FirstName);
            Assert.AreEqual(expected.LastName, actual.LastName);
        }
示例#29
0
        public void Map_DataTableReaderToDictionary_ShouldReturnEntity()
        {
            var sut = new FluentMapper(new DefaultMappingConfiguration());

            var reader = DefaultData.DataTable.CreateDataReader();

            reader.Read();

            var bag = sut.Map <DataTableReader, Dictionary <string, object> >(reader);

            Assert.IsTrue((Guid)bag["PropertyGuid"] == DefaultData.Guid);
            Assert.IsTrue((int)bag["PropertyInt"] == 10);
            Assert.IsTrue((string)bag["PropertyString"] == "PropertyString");
            Assert.IsTrue((string)bag["Property With Space"] == "PropertyWithSpace");
            Assert.IsTrue((DummyEnum)bag["PropertyWithDummyEnum"] == DummyEnum.Hundred);
            Assert.IsTrue((DummyEnum)bag["PropertyWithDummyEnum1"] == DummyEnum.Max);
        }
示例#30
0
        public void Map_DataTableReaderToEntity_ShouldReturnEntity()
        {
            var sut = new FluentMapper(new DefaultMappingConfiguration());

            var reader = DefaultData.DataTable.CreateDataReader();

            reader.Read();

            var entity = sut.Map <DataTableReader, EntityWithPlainNames>(reader);

            Assert.IsTrue(entity.PropertyGuid == DefaultData.Guid);
            Assert.IsTrue(entity.PropertyInt == 10);
            Assert.IsTrue(entity.PropertyString == "PropertyString");
            Assert.IsTrue(entity.PropertyWithSpace == "PropertyWithSpace");
            Assert.IsTrue(entity.PropertyWithDummyEnum == DummyEnum.Hundred);
            Assert.IsTrue(entity.PropertyWithDummyEnum1 == DummyEnum.Max);
        }