@ -1,37 +1,38 @@
using System ;
using System.Collections.Generic ;
using System ;
using System.Collections.Frozen ;
using System.Collections.Generic ;
using System.Linq ;
using System.Threading.Tasks ;
using Microsoft.Extensions.DependencyInjection ;
using Shouldly ;
using System.Threading.Tasks ;
using Microsoft.Extensions.DependencyInjection ;
using Shouldly ;
using Volo.Abp.AutoMapper ;
using Volo.Abp.Localization ;
using Volo.Abp.MultiLingualObjects.TestObjects ;
using Volo.Abp.Testing ;
using Xunit ;
namespace Volo.Abp.MultiLingualObjects ;
public class MultiLingualObjectManager_Tests : AbpIntegratedTest < AbpMultiLingualObjectsTestModule >
{
private readonly IMultiLingualObjectManager _ multiLingualObjectManager ;
private readonly MultiLingualBook _ book ;
private readonly List < MultiLingualBook > _ books ;
private readonly IMapperAccessor _ mapperAccessor ;
private readonly Dictionary < string , string > _ testTranslations = new ( )
{
["ar"] = "C# التعمق في" ,
["zh-Hans"] = "深入理解C#" ,
["en"] = "C# in Depth"
} ;
using Volo.Abp.Localization ;
using Volo.Abp.MultiLingualObjects.TestObjects ;
using Volo.Abp.Testing ;
using Xunit ;
namespace Volo.Abp.MultiLingualObjects ;
public class MultiLingualObjectManager_Tests : AbpIntegratedTest < AbpMultiLingualObjectsTestModule >
{
private readonly IMultiLingualObjectManager _ multiLingualObjectManager ;
private readonly MultiLingualBook _ book ;
private readonly List < MultiLingualBook > _ books ;
private readonly IMapperAccessor _ mapperAccessor ;
private readonly Frozen Dictionary< string , string > _ testTranslations = new Dictionary < string , string >
{
["ar"] = "C# التعمق في" ,
["zh-Hans"] = "深入理解C#" ,
["en"] = "C# in Depth"
} . ToFrozenDictionary ( ) ;
public MultiLingualObjectManager_Tests ( )
{
public MultiLingualObjectManager_Tests ( )
{
_ multiLingualObjectManager = ServiceProvider . GetRequiredService < IMultiLingualObjectManager > ( ) ;
//Single Lookup
_ book = GetTestBook ( "en" , "zh-Hans" ) ;
//Bulk lookup
_ book = GetTestBook ( "en" , "zh-Hans" ) ;
//Bulk lookup
_ books = new List < MultiLingualBook >
{
//has no translations
@ -45,14 +46,14 @@ public class MultiLingualObjectManager_Tests : AbpIntegratedTest<AbpMultiLingual
//arabic + english + chineese
GetTestBook ( "en" , "ar" , "zh-Hans" )
} ;
_ mapperAccessor = ServiceProvider . GetRequiredService < IMapperAccessor > ( ) ;
_ mapperAccessor = ServiceProvider . GetRequiredService < IMapperAccessor > ( ) ;
}
MultiLingualBook GetTestBook ( params string [ ] included )
{
var id = Guid . NewGuid ( ) ;
//Single book
var res = new MultiLingualBook ( id , 1 0 0 ) ;
var id = Guid . NewGuid ( ) ;
//Single book
var res = new MultiLingualBook ( id , 1 0 0 ) ;
foreach ( var language in included )
{
res . Translations . Add ( new MultiLingualBookTranslation
@ -65,45 +66,45 @@ public class MultiLingualObjectManager_Tests : AbpIntegratedTest<AbpMultiLingual
return res ;
}
[Fact]
public async Task GetTranslationAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ book ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
[Fact]
public async Task GetTranslationFromListAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync ( _ book . Translations ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
[Fact]
public async Task Should_Get_Specified_Language ( )
{
using ( CultureHelper . Use ( "zh-Hans" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ book , culture : "en" ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
[Fact]
public async Task GetTranslationAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ book ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
[Fact]
public async Task GetTranslationFromListAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync ( _ book . Translations ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
[Fact]
public async Task Should_Get_Specified_Language ( )
{
using ( CultureHelper . Use ( "zh-Hans" ) )
{
var translation = await _ multiLingualObjectManager . GetTranslationAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ book , culture : "en" ) ;
translation . ShouldNotBeNull ( ) ;
translation . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
[Fact]
public async Task GetBulkTranslationsAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
[Fact]
public async Task GetBulkTranslationsAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
{
var translations = await _ multiLingualObjectManager . GetBulkTranslationsAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ books ) ;
foreach ( var ( entity , translation ) in translations )
{
@ -117,26 +118,26 @@ public class MultiLingualObjectManager_Tests : AbpIntegratedTest<AbpMultiLingual
translation . ShouldBeNull ( ) ;
}
}
}
}
[Fact]
public async Task GetBulkTranslationsFromListAsync ( )
}
}
[Fact]
public async Task GetBulkTranslationsFromListAsync ( )
{
using ( CultureHelper . Use ( "en-us" ) )
using ( CultureHelper . Use ( "en-us" ) )
{
var translations = await _ multiLingualObjectManager . GetBulkTranslationsAsync ( _ books . Select ( x = > x . Translations ) ) ;
foreach ( var translation in translations )
{
translation ? . Name . ShouldBe ( _ testTranslations [ "en" ] ) ;
}
}
}
[Fact]
}
}
[Fact]
public async Task TestBulkMapping ( )
{
using ( CultureHelper . Use ( "en-us" ) )
using ( CultureHelper . Use ( "en-us" ) )
{
var translations = await _ multiLingualObjectManager . GetBulkTranslationsAsync < MultiLingualBook , MultiLingualBookTranslation > ( _ books ) ;
var translationsDict = translations . ToDictionary ( x = > x . entity . Id , x = > x . translation ) ;
@ -152,5 +153,5 @@ public class MultiLingualObjectManager_Tests : AbpIntegratedTest<AbpMultiLingual
Assert . Equal ( og . Translations . FirstOrDefault ( x = > x . Language = = "en" ) ? . Name , m . Name ) ;
}
}
}
}
}
}