From 6319b22753bc0930ce36d8468599fbedefef8650 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Sep 2020 17:14:24 +0800 Subject: [PATCH] Add unit tests --- ...toMapperMultiLingualDtoExtensions_Tests.cs | 112 ++++++++++++++++++ .../Abp/AutoMapper/AutoMapperTestModule.cs | 15 ++- 2 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions_Tests.cs diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions_Tests.cs b/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions_Tests.cs new file mode 100644 index 0000000000..22675b61ca --- /dev/null +++ b/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions_Tests.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Volo.Abp.AutoMapper; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Settings; +using Volo.Abp.Testing; +using Xunit; + +namespace AutoMapper +{ + public class AbpAutoMapperMultiLingualDtoExtensions_Tests : AbpIntegratedTest + { + private readonly Volo.Abp.ObjectMapping.IObjectMapper _objectMapper; + private readonly Book _book; + + public AbpAutoMapperMultiLingualDtoExtensions_Tests() + { + _objectMapper = ServiceProvider.GetRequiredService(); + + var id = Guid.NewGuid(); + _book = new Book(id, 100) + { + Translations = new List + { + new BookTranslation + { + CoreId = id, + Language = "en", + Name = "C# in Depth" + }, + new BookTranslation + { + CoreId = id, + Language = "zh-Hans", + Name = "深入理解C#" + } + } + }; + } + + [Fact] + public void Should_Map_CurrentUICulture() + { + CultureInfo.CurrentCulture = new CultureInfo("en"); + var bookDto = _objectMapper.Map(_book); + + bookDto.Name.ShouldBe("C# in Depth"); + bookDto.Price.ShouldBe(_book.Price); + bookDto.Id.ShouldBe(_book.Id); + } + + [Fact] + public void Should_Map_FeedbackUICulture() + { + CultureInfo.CurrentCulture = new CultureInfo("en-us"); + var bookDto = _objectMapper.Map(_book); + + bookDto.Name.ShouldBe("C# in Depth"); + bookDto.Price.ShouldBe(100); + bookDto.Id.ShouldBe(_book.Id); + } + } + + public class Book : Entity, IMultiLingualEntity + { + public Book(Guid id, decimal price) + { + Id = id; + Price = price; + } + + public decimal Price { get; set; } + + public ICollection Translations { get; set; } + } + + public class BookTranslation : IEntityTranslation + { + public string Name { get; set; } + + public string Language { get; set; } + + public Book Core { get; set; } + + public Guid CoreId { get; set; } + } + + public class BookDto + { + public string Name { get; set; } + + public Guid Id { get; set; } + + public decimal Price { get; set; } + } + + public class BookProfile : Profile + { + public BookProfile() + { + } + + public BookProfile(ISettingProvider settingsProvider) + { + this.CreateMultLingualMap(settingsProvider, true).TranslationMap + .ForMember(d => d.Id, m => m.MapFrom(s => s.CoreId)); + } + } +} diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs index 44331522a7..26f5398042 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs @@ -1,12 +1,15 @@ -using Volo.Abp.Modularity; +using AutoMapper; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; using Volo.Abp.ObjectExtending; +using Volo.Abp.Settings; namespace Volo.Abp.AutoMapper { [DependsOn( typeof(AbpAutoMapperModule), typeof(AbpObjectExtendingTestModule) - )] + )] public class AutoMapperTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) @@ -14,7 +17,13 @@ namespace Volo.Abp.AutoMapper Configure(options => { options.AddMaps(); + + options.Configurators.Add(configurationContext => + { + configurationContext.MapperConfiguration.AddProfile( + new BookProfile(configurationContext.ServiceProvider.GetService())); + }); }); } } -} \ No newline at end of file +}