From 6b25cfcaaab2bee1731d00f23d11a379c9d8866b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 1 Jun 2020 01:16:22 +0300 Subject: [PATCH] Added IgnoreCreationTime. --- .../Volo.Abp.AutoMapper.csproj | 1 + .../Abp/AutoMapper/AbpAutoMapperModule.cs | 5 ++- .../AutoMapperExpressionExtensions.cs | 8 ++++ .../AutoMapperExpressionExtensions_Tests.cs | 44 ++++++++++++++++--- 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj index 327f2078d1..2fb39be54f 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj +++ b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj @@ -15,6 +15,7 @@ + diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs index 1590e879b1..214872e371 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs @@ -2,6 +2,7 @@ using AutoMapper; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Volo.Abp.Auditing; using Volo.Abp.Modularity; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; @@ -10,7 +11,9 @@ namespace Volo.Abp.AutoMapper { [DependsOn( typeof(AbpObjectMappingModule), - typeof(AbpObjectExtendingModule))] + typeof(AbpObjectExtendingModule), + typeof(AbpAuditingModule) + )] public class AbpAutoMapperModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs index d8cc559d0f..01e051f019 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Linq.Expressions; using AutoMapper; +using Volo.Abp.Auditing; namespace Volo.Abp.AutoMapper { @@ -10,5 +11,12 @@ namespace Volo.Abp.AutoMapper { return mappingExpression.ForMember(destinationMember, opts => opts.Ignore()); } + + public static IMappingExpression IgnoreCreationTime( + this IMappingExpression mappingExpression) + where TDestination : IHasCreationTime + { + return mappingExpression.Ignore(x => x.CreationTime); + } } } diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs index 11ccbfb4c8..d667b3895d 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs @@ -1,5 +1,7 @@ -using AutoMapper; +using System; +using AutoMapper; using Shouldly; +using Volo.Abp.Auditing; using Xunit; namespace Volo.Abp.AutoMapper @@ -9,15 +11,12 @@ namespace Volo.Abp.AutoMapper [Fact] public void Should_Ignore_Configured_Property() { - var configuration = new MapperConfiguration( + var mapper = CreateMapper( cfg => cfg.CreateMap() .Ignore(x => x.Value2) .Ignore(x => x.Value3) ); - configuration.AssertConfigurationIsValid(); - var mapper = configuration.CreateMapper(); - var obj2 = mapper.Map( new SimpleClass1 { @@ -31,6 +30,31 @@ namespace Volo.Abp.AutoMapper obj2.Value3.ShouldBeNull(); } + [Fact] + public void Should_Ignore_CreationTime() + { + var mapper = CreateMapper( + cfg => cfg.CreateMap() + .IgnoreCreationTime() + ); + + var obj2 = mapper.Map( + new SimpleClassWithCreationTime1 + { + CreationTime = DateTime.Now + } + ); + + obj2.CreationTime.ShouldBe(default); + } + + private static IMapper CreateMapper(Action configurer) + { + var configuration = new MapperConfiguration(configurer); + configuration.AssertConfigurationIsValid(); + return configuration.CreateMapper(); + } + public class SimpleClass1 { public string Value1 { get; set; } @@ -43,5 +67,15 @@ namespace Volo.Abp.AutoMapper public string Value2 { get; set; } public string Value3 { get; set; } } + + public class SimpleClassWithCreationTime1 : IHasCreationTime + { + public DateTime CreationTime { get; set; } + } + + public class SimpleClassWithCreationTime2 : IHasCreationTime + { + public DateTime CreationTime { get; set; } + } } } \ No newline at end of file