Browse Source

Added tests for LocalizableStringSerializer

pull/13644/head
Halil İbrahim Kalkan 4 years ago
parent
commit
6f5380ab39
  1. 5
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs
  2. 39
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs
  3. 45
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
  4. 75
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/LocalizableStringSerializer_Tests.cs
  5. 1
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs

5
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs

@ -51,6 +51,11 @@ public class LocalizableStringSerializer : ILocalizableStringSerializer, ITransi
var resourceName = value.Substring(2, commaPosition - 2);
var name = value.Substring(commaPosition + 1);
if (name.IsNullOrWhiteSpace())
{
throw new AbpException("Invalid LocalizableString value: " + value);
}
var resourceType = LocalizationOptions.Resources.GetOrNull(resourceName)?.ResourceType;
return new LocalizableString(

39
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalizationTestModule.cs

@ -0,0 +1,39 @@
using Volo.Abp.Localization.TestResources.Base.CountryNames;
using Volo.Abp.Localization.TestResources.Base.Validation;
using Volo.Abp.Localization.TestResources.Source;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Localization;
[DependsOn(typeof(AbpTestBaseModule))]
[DependsOn(typeof(AbpLocalizationModule))]
public class AbpLocalizationTestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpLocalizationTestModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<LocalizationTestValidationResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/Validation");
options.Resources
.Add<LocalizationTestCountryNamesResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/CountryNames");
options.Resources
.Add<LocalizationTestResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Source");
options.Resources
.Get<LocalizationTestResource>()
.AddVirtualJson("/Volo/Abp/Localization/TestResources/SourceExt");
});
}
}

45
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

@ -2,17 +2,13 @@ using System.Globalization;
using System.Linq;
using Microsoft.Extensions.Localization;
using Shouldly;
using Volo.Abp.Localization.TestResources.Base.CountryNames;
using Volo.Abp.Localization.TestResources.Base.Validation;
using Volo.Abp.Localization.TestResources.Source;
using Volo.Abp.Modularity;
using Volo.Abp.Testing;
using Volo.Abp.VirtualFileSystem;
using Xunit;
namespace Volo.Abp.Localization;
public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.TestModule>
public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule>
{
private readonly IStringLocalizer<LocalizationTestResource> _localizer;
private readonly IStringLocalizerFactory _localizerFactory;
@ -76,7 +72,6 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
{
_localizer["Car"].Value.ShouldBe("Auto");
}
}
[Fact]
@ -106,7 +101,6 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
{
_localizer["SeeYou"].Value.ShouldBe("Bis bald");
}
}
[Fact]
@ -132,7 +126,6 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
_localizer.GetAllStrings().ShouldContain(ls => ls.Name == "USA");
}
}
[Fact]
@ -275,7 +268,6 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
ls.ResourceNotFound == false
);
}
}
[Fact]
@ -310,7 +302,6 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
ls.ResourceNotFound == false
);
}
}
[Fact]
@ -368,36 +359,4 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalization_Tests.Tes
);
}
}
[DependsOn(typeof(AbpTestBaseModule))]
[DependsOn(typeof(AbpLocalizationModule))]
public class TestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<TestModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<LocalizationTestValidationResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/Validation");
options.Resources
.Add<LocalizationTestCountryNamesResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Base/CountryNames");
options.Resources
.Add<LocalizationTestResource>("en")
.AddVirtualJson("/Volo/Abp/Localization/TestResources/Source");
options.Resources
.Get<LocalizationTestResource>()
.AddVirtualJson("/Volo/Abp/Localization/TestResources/SourceExt");
});
}
}
}
}

75
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/LocalizableStringSerializer_Tests.cs

@ -0,0 +1,75 @@
using Shouldly;
using Volo.Abp.Localization.TestResources.Source;
using Volo.Abp.Testing;
using Xunit;
namespace Volo.Abp.Localization;
public class LocalizableStringSerializer_Tests : AbpIntegratedTest<AbpLocalizationTestModule>
{
private readonly ILocalizableStringSerializer _serializer;
public LocalizableStringSerializer_Tests()
{
_serializer = GetRequiredService<ILocalizableStringSerializer>();
}
[Fact]
public void Serialize_FixedLocalizableString()
{
_serializer
.Serialize(new FixedLocalizableString(""))
.ShouldBe("F:");
_serializer
.Serialize(new FixedLocalizableString("Hello World"))
.ShouldBe("F:Hello World");
}
[Fact]
public void Serialize_LocalizableString()
{
_serializer
.Serialize(new LocalizableString(typeof(LocalizationTestResource),"Car"))
.ShouldBe("L:Test,Car");
}
[Fact]
public void Deserialize_FixedLocalizableString()
{
_serializer
.Deserialize("")
.ShouldBeOfType<FixedLocalizableString>()
.Value.ShouldBe("");
_serializer
.Deserialize("Hello")
.ShouldBeOfType<FixedLocalizableString>()
.Value.ShouldBe("Hello");
_serializer
.Deserialize("F:Hello")
.ShouldBeOfType<FixedLocalizableString>()
.Value.ShouldBe("Hello");
}
[Fact]
public void Deserialize_LocalizableString()
{
var localizableString = _serializer
.Deserialize("L:Test,Car")
.ShouldBeOfType<LocalizableString>();
localizableString.ResourceType.ShouldBe(typeof(LocalizationTestResource));
localizableString.Name.ShouldBe("Car");
Assert.Throws<AbpException>(() =>
{
_serializer.Deserialize("L:Test");
});
Assert.Throws<AbpException>(() =>
{
_serializer.Deserialize("L:Test, ");
});
}
}

1
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/LocalizationTestResource.cs

@ -7,6 +7,7 @@ namespace Volo.Abp.Localization.TestResources.Source;
typeof(LocalizationTestValidationResource),
typeof(LocalizationTestCountryNamesResource)
)]
[LocalizationResourceName("Test")]
public sealed class LocalizationTestResource
{

Loading…
Cancel
Save