From 671d10867d72912e8ccea8d197655737886ba849 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 19 Mar 2019 11:02:28 +0300 Subject: [PATCH] Added tests for localization --- .../AbpDictionaryBasedStringLocalizer.cs | 9 ++- .../Abp/Localization/AbpLocalization_Tests.cs | 60 +++++++++++++++++-- .../Source/LocalizationTestResource.cs | 6 +- .../Localization/TestResources/Source/en.json | 3 +- 4 files changed, 69 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index c9428626a8..18fa853ecf 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -26,7 +26,10 @@ namespace Volo.Abp.Localization public IEnumerable GetAllStrings(bool includeParentCultures) { - return GetAllStrings(CultureInfo.CurrentUICulture.Name, includeParentCultures); + return GetAllStrings( + CultureInfo.CurrentUICulture.Name, + includeParentCultures + ); } public IStringLocalizer WithCulture(CultureInfo culture) @@ -109,7 +112,9 @@ namespace Volo.Abp.Localization return null; } - protected virtual IReadOnlyList GetAllStrings(string cultureName, bool includeParentCultures = true) + protected virtual IReadOnlyList GetAllStrings( + string cultureName, + bool includeParentCultures = true) { //TODO: Can be optimized (example: if it's already default dictionary, skip overriding) diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index ea6ce3e242..8c5a9f5702 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -1,4 +1,5 @@ using System.Globalization; +using System.Linq; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Shouldly; @@ -104,6 +105,46 @@ namespace Volo.Abp.Localization _localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["CarPlural"].Value.ShouldBe("Araba"); } + [Fact] + public void GetAllStrings_With_Parents() + { + using (AbpCultureHelper.Use("tr")) + { + var localizedStrings = _localizer.GetAllStrings(true).ToList(); + + localizedStrings.ShouldContain( + ls => ls.Name == "FortyTwo" && + ls.Value == "Forty Two" && + ls.ResourceNotFound == false + ); + + localizedStrings.ShouldContain( + ls => ls.Name == "Universe" && + ls.Value == "Evren" && + ls.ResourceNotFound == false + ); + } + } + + [Fact] + public void GetAllStrings_Without_Parents() + { + using (AbpCultureHelper.Use("tr")) + { + var localizedStrings = _localizer.GetAllStrings(false).ToList(); + + localizedStrings.ShouldNotContain( + ls => ls.Name == "FortyTwo" + ); + + localizedStrings.ShouldContain( + ls => ls.Name == "Universe" && + ls.Value == "Evren" && + ls.ResourceNotFound == false + ); + } + } + [DependsOn(typeof(AbpTestBaseModule))] [DependsOn(typeof(AbpLocalizationModule))] public class TestModule : AbpModule @@ -117,10 +158,21 @@ namespace Volo.Abp.Localization Configure(options => { - options.Resources.Add("en").AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/Validation"); - options.Resources.Add("en").AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/CountryNames"); - options.Resources.Add("en").AddVirtualJson("/Volo/Abp/Localization/TestResources/Source"); - options.Resources.Get().AddVirtualJson("/Volo/Abp/Localization/TestResources/SourceExt"); + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/Validation"); + + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/CountryNames"); + + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/Localization/TestResources/Source"); + + options.Resources + .Get() + .AddVirtualJson("/Volo/Abp/Localization/TestResources/SourceExt"); }); } } diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs index 04cacc6b20..9344085adf 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs @@ -3,8 +3,10 @@ using Volo.Abp.Localization.TestResources.Base.Validation; namespace Volo.Abp.Localization.TestResources.Source { - [InheritResource(typeof(LocalizationTestValidationResource))] - [InheritResource(typeof(LocalizationTestCountryNamesResource))] + [InheritResource( + typeof(LocalizationTestValidationResource), + typeof(LocalizationTestCountryNamesResource) + )] public sealed class LocalizationTestResource { diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/en.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/en.json index 0388b6efe2..098b3655ee 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/en.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/en.json @@ -5,6 +5,7 @@ "Car": "Car", "CarPlural": "Cars", "MaxLenghtErrorMessage": "This field's length can be maximum of '{0}' chars", - "Universe": "Universe" + "Universe": "Universe", + "FortyTwo": "Forty Two" } } \ No newline at end of file