Browse Source

Implement ignoring audited properties also for audit interfaces with user type.

pull/4164/head
Halil İbrahim Kalkan 6 years ago
parent
commit
f64bb76e73
  1. 54
      framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs
  2. 70
      framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs

54
framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs

@ -93,5 +93,59 @@ namespace Volo.Abp.AutoMapper
.IgnoreAuditedObjectProperties()
.IgnoreDeletionAuditedObjectProperties();
}
public static IMappingExpression<TSource, TDestination> IgnoreMayHaveCreatorProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : IMayHaveCreator<TUser>
{
return mappingExpression
.Ignore(x => x.Creator);
}
public static IMappingExpression<TSource, TDestination> IgnoreCreationAuditedObjectProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : ICreationAuditedObject<TUser>
{
return mappingExpression
.IgnoreCreationAuditedObjectProperties()
.IgnoreMayHaveCreatorProperties<TSource, TDestination, TUser>();
}
public static IMappingExpression<TSource, TDestination> IgnoreModificationAuditedObjectProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : IModificationAuditedObject<TUser>
{
return mappingExpression
.IgnoreModificationAuditedObjectProperties()
.Ignore(x => x.LastModifier);
}
public static IMappingExpression<TSource, TDestination> IgnoreAuditedObjectProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : IAuditedObject<TUser>
{
return mappingExpression
.IgnoreCreationAuditedObjectProperties<TSource, TDestination, TUser>()
.IgnoreModificationAuditedObjectProperties<TSource, TDestination, TUser>();
}
public static IMappingExpression<TSource, TDestination> IgnoreDeletionAuditedObjectProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : IDeletionAuditedObject<TUser>
{
return mappingExpression
.IgnoreDeletionAuditedObjectProperties()
.Ignore(x => x.Deleter);
}
public static IMappingExpression<TSource, TDestination> IgnoreFullAuditedObjectProperties<TSource, TDestination, TUser>(
this IMappingExpression<TSource, TDestination> mappingExpression)
where TDestination : IFullAuditedObject<TUser>
{
return mappingExpression
.IgnoreAuditedObjectProperties<TSource, TDestination, TUser>()
.IgnoreDeletionAuditedObjectProperties<TSource, TDestination, TUser>();
}
}
}

70
framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs

@ -61,6 +61,43 @@ namespace Volo.Abp.AutoMapper
obj2.DeletionTime.ShouldBeNull();
obj2.IsDeleted.ShouldBeFalse();
}
[Fact]
public void Should_Ignore_Audit_Properties_With_User()
{
var mapper = CreateMapper(
cfg => cfg
.CreateMap<SimpleClassAuditedWithUser1, SimpleClassAuditedWithUser2>()
.IgnoreFullAuditedObjectProperties<SimpleClassAuditedWithUser1, SimpleClassAuditedWithUser2, SimpleUser>()
);
var obj2 = mapper.Map<SimpleClassAuditedWithUser2>(
new SimpleClassAuditedWithUser1
{
CreationTime = DateTime.Now,
CreatorId = Guid.NewGuid(),
LastModificationTime = DateTime.Now,
LastModifierId = Guid.NewGuid(),
DeleterId = Guid.NewGuid(),
DeletionTime = DateTime.Now,
IsDeleted = true,
Creator = new SimpleUser(),
Deleter = new SimpleUser(),
LastModifier = new SimpleUser()
}
);
obj2.CreationTime.ShouldBe(default);
obj2.CreatorId.ShouldBeNull();
obj2.LastModificationTime.ShouldBe(default);
obj2.LastModifierId.ShouldBeNull();
obj2.DeleterId.ShouldBeNull();
obj2.DeletionTime.ShouldBeNull();
obj2.IsDeleted.ShouldBeFalse();
obj2.Creator.ShouldBeNull();
obj2.Deleter.ShouldBeNull();
obj2.LastModifier.ShouldBeNull();
}
private static IMapper CreateMapper(Action<IMapperConfigurationExpression> configure)
{
@ -103,5 +140,38 @@ namespace Volo.Abp.AutoMapper
public DateTime? DeletionTime { get; set; }
public Guid? DeleterId { get; set; }
}
public class SimpleClassAuditedWithUser1 : IFullAuditedObject<SimpleUser>
{
public DateTime CreationTime { get; set; }
public Guid? CreatorId { get; set; }
public DateTime? LastModificationTime { get; set; }
public Guid? LastModifierId { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DeletionTime { get; set; }
public Guid? DeleterId { get; set; }
public SimpleUser Creator { get; set; }
public SimpleUser LastModifier { get; set; }
public SimpleUser Deleter { get; set; }
}
public class SimpleClassAuditedWithUser2 : IFullAuditedObject<SimpleUser>
{
public DateTime CreationTime { get; set; }
public Guid? CreatorId { get; set; }
public DateTime? LastModificationTime { get; set; }
public Guid? LastModifierId { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DeletionTime { get; set; }
public Guid? DeleterId { get; set; }
public SimpleUser Creator { get; set; }
public SimpleUser LastModifier { get; set; }
public SimpleUser Deleter { get; set; }
}
public class SimpleUser
{
}
}
}
Loading…
Cancel
Save