123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- using System;
- using Shouldly;
- using Xunit;
- namespace PetaPoco.Tests.Unit.Core
- {
- public class StandardMapperTests
- {
- private readonly IMapper _mapper;
- public StandardMapperTests()
- : this(null)
- {
- }
- protected StandardMapperTests(IMapper mapper)
- {
- _mapper = mapper ?? new StandardMapper();
- }
- [Fact]
- public void GetTableInfo_GivenEntityWithoutTableAttribute_ShouldBeValid()
- {
- var exaEntity = _mapper.GetTableInfo(typeof(ExaEntity));
- var zettaEntity = _mapper.GetTableInfo(typeof(ZettaEntity));
- exaEntity.TableName.ShouldBe("ExaEntity");
- exaEntity.PrimaryKey.ShouldBe("Id");
- exaEntity.AutoIncrement.ShouldBeTrue();
- exaEntity.SequenceName.ShouldBeNull();
- zettaEntity.TableName.ShouldBe("ZettaEntity");
- zettaEntity.PrimaryKey.ShouldBeNull();
- zettaEntity.AutoIncrement.ShouldBeFalse();
- zettaEntity.SequenceName.ShouldBeNull();
- }
- [Fact]
- public void GetTableInfo_GivenEntityWithTableAttribute_ShouldBeValid()
- {
- var teraEntity = _mapper.GetTableInfo(typeof(TeraEntity));
- var yottaEntity = _mapper.GetTableInfo(typeof(YottaEntity));
- teraEntity.TableName.ShouldBe("TblTeraEntity");
- teraEntity.PrimaryKey.ShouldBe("TheId");
- teraEntity.AutoIncrement.ShouldBeFalse();
- teraEntity.SequenceName.ShouldBeNull();
- yottaEntity.TableName.ShouldBe("yotta_entities");
- yottaEntity.PrimaryKey.ShouldBe("Id");
- yottaEntity.AutoIncrement.ShouldBeTrue();
- yottaEntity.SequenceName.ShouldBe("SEQ_1");
- }
- [Fact]
- public void GetColumnInfo_GivenPropertyWithoutColumnAttribute_ShouldBeValid()
- {
- var columnInfo1 = _mapper.GetColumnInfo(typeof(ExaEntity).GetProperty(nameof(ExaEntity.Id)));
- var columnInfo2 = _mapper.GetColumnInfo(typeof(ExaEntity).GetProperty(nameof(ExaEntity.AnotherColumn)));
- columnInfo1.ColumnName.ShouldBe("Id");
- columnInfo1.ForceToUtc.ShouldBeFalse();
- columnInfo1.ResultColumn.ShouldBeFalse();
- columnInfo2.ColumnName.ShouldBe("AnotherColumn");
- columnInfo2.ForceToUtc.ShouldBeFalse();
- columnInfo2.ResultColumn.ShouldBeFalse();
- }
- [Fact]
- public void GetColumnInfo_GivenPropertyWithoutColumnAttributeAndEntityWithExplicitAttribute_ShouldBeNull()
- {
- var columnInfo = _mapper.GetColumnInfo(typeof(TeraEntity).GetProperty(nameof(TeraEntity.NotAColumn)));
- columnInfo.ShouldBeNull();
- }
- [Fact]
- public void GetColumnInfo_GivenPropertyWithIgnoreColumnAttributeAndEntityWithoutExplicitAttribute_ShouldBeNull()
- {
- var columnInfo = _mapper.GetColumnInfo(typeof(YottaEntity).GetProperty(nameof(YottaEntity.NotAColumn)));
- columnInfo.ShouldBeNull();
- }
- [Fact]
- public void GetColumnInfo_GivenPropertyWithColumnAttribute_ShouldBeValid()
- {
- var columnInfo1 = _mapper.GetColumnInfo(typeof(TeraEntity).GetProperty(nameof(TeraEntity.TheId)));
- var columnInfo2 = _mapper.GetColumnInfo(typeof(TeraEntity).GetProperty(nameof(TeraEntity.AnotherColumn)));
- var columnInfo3 = _mapper.GetColumnInfo(typeof(TeraEntity).GetProperty(nameof(TeraEntity.ColumnWithInsertTemplate)));
- columnInfo1.ColumnName.ShouldBe("Id");
- columnInfo1.ForceToUtc.ShouldBeFalse();
- columnInfo1.ResultColumn.ShouldBeFalse();
- columnInfo2.ColumnName.ShouldBe("another_column");
- columnInfo2.ForceToUtc.ShouldBeFalse();
- columnInfo2.ResultColumn.ShouldBeFalse();
- columnInfo3.ColumnName.ShouldBe("ColumnWithInsertTemplate");
- columnInfo3.InsertTemplate.ShouldBe("test");
- columnInfo3.UpdateTemplate.ShouldBe("test1");
- }
- [Fact]
- public void GetColumnInfo_GivenPropertyWithResultAttribute_ShouldBeValdid()
- {
- var columnInfo1 = _mapper.GetColumnInfo(typeof(TeraEntity).GetProperty(nameof(TeraEntity.ResultColumn)));
- var columnInfo2 = _mapper.GetColumnInfo(typeof(YottaEntity).GetProperty(nameof(YottaEntity.ResultColumn)));
- columnInfo1.ColumnName.ShouldBe("result_column");
- columnInfo1.ForceToUtc.ShouldBeFalse();
- columnInfo1.ResultColumn.ShouldBeTrue();
- columnInfo2.ColumnName.ShouldBe("ResultColumn");
- columnInfo2.ForceToUtc.ShouldBeFalse();
- columnInfo2.ResultColumn.ShouldBeTrue();
- }
- [Fact]
- public void GetFromDbConverter_GivenPropertyAndType_ShouldBeNull()
- {
- var func = _mapper.GetFromDbConverter(typeof(TeraEntity).GetProperty(nameof(TeraEntity.TheId)), typeof(int));
- func.ShouldBeNull();
- }
- [Fact]
- public void GetToDbConverter_GivenProperty_ShouldBeNull()
- {
- var func = _mapper.GetToDbConverter(typeof(TeraEntity).GetProperty(nameof(TeraEntity.TheId)));
- func.ShouldBeNull();
- }
- [TableName("TblTeraEntity")]
- [PrimaryKey("TheId", AutoIncrement = false)]
- [ExplicitColumns]
- public class TeraEntity
- {
- [Column("Id")]
- public int TheId { get; set; }
- [Column("another_column")]
- public string AnotherColumn { get; set; }
- [ResultColumn("result_column")]
- public string ResultColumn { get; set; }
- public string NotAColumn { get; set; }
- [Column(ForceToUtc = true)]
- public DateTime Created { get; set; }
- [Column(InsertTemplate = "test", UpdateTemplate = "test1")]
- public string ColumnWithInsertTemplate { get; set; }
- }
- [TableName("yotta_entities")]
- [PrimaryKey("Id", AutoIncrement = true, SequenceName = "SEQ_1")]
- public class YottaEntity
- {
- [Column]
- public int Id { get; set; }
- [Column]
- public string AnotherColumn { get; set; }
- [ResultColumn]
- public string ResultColumn { get; set; }
- [Ignore]
- public string NotAColumn { get; set; }
- [Column(ForceToUtc = true)]
- public DateTime Created { get; set; }
- }
- public class ExaEntity
- {
- public int Id { get; set; }
- public string AnotherColumn { get; set; }
- }
- public class ZettaEntity
- {
- public int TheId { get; set; }
- public string AnotherColumn { get; set; }
- }
- }
- }
|