Skip to content

Commit 0807907

Browse files
committed
test: 更新单元测试
1 parent 5b6d93a commit 0807907

File tree

2 files changed

+58
-36
lines changed

2 files changed

+58
-36
lines changed

src/BootstrapBlazor/Localization/Json/JsonStringLocalizer.cs

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -72,43 +72,39 @@ public override LocalizedString this[string name]
7272
}
7373
}
7474

75-
private string? GetStringSafely(string name)
75+
private string? GetStringSafely(string name) => GetStringFromService(name) ?? GetStringFromResourceManager(name) ?? GetStringFromJson(name);
76+
77+
private string? GetStringFromService(string name)
7678
{
77-
string? val = null;
79+
// get string from inject service
80+
string? ret = null;
7881
if (jsonLocalizationOptions.DisableGetLocalizerFromService == false)
7982
{
80-
val = GetStringFromService(name);
81-
if (val != null)
83+
var localizer = Utility.GetStringLocalizerFromService(Assembly, typeName);
84+
if (localizer != null && localizer is not JsonStringLocalizer)
8285
{
83-
return val;
86+
var l = localizer[name];
87+
if (!l.ResourceNotFound)
88+
{
89+
ret = l.Value;
90+
}
8491
}
8592
}
86-
87-
if (jsonLocalizationOptions.DisableGetLocalizerFromResourceManager == false)
88-
{
89-
val = GetStringSafely(name, CultureInfo.CurrentUICulture);
90-
}
91-
return val ?? GetStringSafelyFromJson(name);
93+
return ret;
9294
}
9395

94-
private string? GetStringFromService(string name)
96+
private string? GetStringFromResourceManager(string name)
9597
{
96-
// get string from inject service
9798
string? ret = null;
98-
var localizer = Utility.GetStringLocalizerFromService(Assembly, typeName);
99-
if (localizer != null && localizer is not JsonStringLocalizer)
99+
if (jsonLocalizationOptions.DisableGetLocalizerFromResourceManager == false)
100100
{
101-
var l = localizer[name];
102-
if (!l.ResourceNotFound)
103-
{
104-
ret = l.Value;
105-
}
101+
ret = GetStringSafely(name, CultureInfo.CurrentUICulture);
106102
}
107103
return ret;
108104
}
109105

110106
private readonly ConcurrentDictionary<string, object?> _missingManifestCache = [];
111-
private string? GetStringSafelyFromJson(string name)
107+
private string? GetStringFromJson(string name)
112108
{
113109
// get string from json localization file
114110
var localizerStrings = MegerResolveLocalizers(CacheManager.GetAllStringsByTypeName(Assembly, typeName));
@@ -131,18 +127,14 @@ public override LocalizedString this[string name]
131127

132128
private List<LocalizedString> MegerResolveLocalizers(IEnumerable<LocalizedString>? localizerStrings)
133129
{
134-
var localizers = new List<LocalizedString>();
135-
var resolveLocalizers = CacheManager.GetTypeStringsFromResolve(typeName);
136-
localizers.AddRange(resolveLocalizers);
137-
130+
var localizers = new List<LocalizedString>(CacheManager.GetTypeStringsFromResolve(typeName));
138131
if (localizerStrings != null)
139132
{
140133
localizers.AddRange(localizerStrings);
141134
}
142135
return localizers;
143136
}
144137

145-
146138
private void HandleMissingResourceItem(string name)
147139
{
148140
localizationMissingItemHandler.HandleMissingItem(name, typeName, CultureInfo.CurrentUICulture.Name);
@@ -177,10 +169,13 @@ public override IEnumerable<LocalizedString> GetAllStrings(bool includeParentCul
177169
IEnumerable<LocalizedString>? GetAllStringsFromService()
178170
{
179171
IEnumerable<LocalizedString>? ret = null;
180-
var localizer = Utility.GetStringLocalizerFromService(Assembly, typeName);
181-
if (localizer != null && localizer is not JsonStringLocalizer)
172+
if (jsonLocalizationOptions.DisableGetLocalizerFromService == false)
182173
{
183-
ret = localizer.GetAllStrings(includeParentCultures);
174+
var localizer = Utility.GetStringLocalizerFromService(Assembly, typeName);
175+
if (localizer != null && localizer is not JsonStringLocalizer)
176+
{
177+
ret = localizer.GetAllStrings(includeParentCultures);
178+
}
184179
}
185180
return ret;
186181
}
@@ -189,14 +184,18 @@ public override IEnumerable<LocalizedString> GetAllStrings(bool includeParentCul
189184
// get all strings from base json localization factory
190185
IEnumerable<LocalizedString>? GetAllStringsFromBase()
191186
{
192-
IEnumerable<LocalizedString>? ret = base.GetAllStrings(includeParentCultures);
193-
try
194-
{
195-
CheckMissing();
196-
}
197-
catch (MissingManifestResourceException)
187+
IEnumerable<LocalizedString>? ret = null;
188+
if (jsonLocalizationOptions.DisableGetLocalizerFromResourceManager == false)
198189
{
199-
ret = null;
190+
ret = base.GetAllStrings(includeParentCultures);
191+
try
192+
{
193+
CheckMissing();
194+
}
195+
catch (MissingManifestResourceException)
196+
{
197+
ret = null;
198+
}
200199
}
201200
return ret;
202201

test/UnitTest/Localization/JsonStringLocalizerTest.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
55

6+
using Microsoft.Extensions.Configuration;
67
using Microsoft.Extensions.DependencyInjection;
78
using Microsoft.Extensions.Localization;
89
using System.ComponentModel.DataAnnotations;
@@ -175,6 +176,27 @@ public void GetAllStrings_FromBase()
175176
Assert.Empty(items);
176177
}
177178

179+
[Fact]
180+
public void DisableGetLocalizerFromResourceManager_Ok()
181+
{
182+
var sc = new ServiceCollection();
183+
var builder = new ConfigurationBuilder();
184+
builder.AddJsonFile("appsettings.json");
185+
builder.AddInMemoryCollection(new Dictionary<string, string?>()
186+
{
187+
["BootstrapBlazorOptions:DisableGetLocalizerFromService"] = "true",
188+
["BootstrapBlazorOptions:DisableGetLocalizerFromResourceManager"] = "true"
189+
});
190+
var config = builder.Build();
191+
sc.AddSingleton<IConfiguration>(config);
192+
sc.AddBootstrapBlazor();
193+
194+
var provider = sc.BuildServiceProvider();
195+
var localizer = provider.GetRequiredService<IStringLocalizer<Dummy>>();
196+
var items = localizer.GetAllStrings(false);
197+
Assert.Empty(items);
198+
}
199+
178200
[Fact]
179201
public void GetAllStrings_FromResource()
180202
{
@@ -243,6 +265,7 @@ public void HandleMissingItem()
243265
var provider = sc.BuildServiceProvider();
244266
var localizer = provider.GetRequiredService<IStringLocalizer<Foo>>();
245267
var val = localizer["missing-item"];
268+
Assert.True(val.ResourceNotFound);
246269

247270
var handler = provider.GetRequiredService<ILocalizationMissingItemHandler>();
248271
MockLocalizationMissingItemHandler? mockHandler = null;

0 commit comments

Comments
 (0)