public void ItShouldCacheTheComputedLocalizer() { // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); // Setup extension service var extensionServiceMock = SetupExtensionServiceMock(new Dictionary <string, string>(), extensionOptionsContainer); // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer, extensionServiceMock.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer); var cacheServiceMock = new Mock <ICacheService>(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheServiceMock.Object, Logger); var localizer = factory.Create(BaseName, Assembly.FullName); Assert.NotNull(localizer); cacheServiceMock.Verify(x => x.Match(Assembly, BaseName, null), Times.Once); cacheServiceMock.Verify(x => x.Cache(Assembly, BaseName, null, localizer), Times.Once); cacheServiceMock.Verify(x => x.Match(Assembly, BaseName, CultureInfo), Times.Once); cacheServiceMock.Verify(x => x.Cache(Assembly, BaseName, CultureInfo, It.IsAny <IStringLocalizer>()), Times.Once); }
public void IsShouldCreateAJsonStringLocalizerUsingTheRightExtensionService() { var key = "key"; var value1 = "value1"; var map1 = new Dictionary <string, string> { [key] = value1, }; var value2 = "value2"; var map2 = new Dictionary <string, string> { [key] = value2, }; // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer1 = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); extensionOptionsContainer1.Options.AssemblyNames = new[] { "OtherAssemblyName" }; var extensionOptionsContainer2 = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); extensionOptionsContainer2.Options.AssemblyNames = new[] { Assembly.GetName().Name }; // Setup extension service var extensionServiceMock1 = SetupExtensionServiceMock(map1, extensionOptionsContainer1); var extensionServiceMock2 = SetupExtensionServiceMock(map2, extensionOptionsContainer2); // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer1, extensionServiceMock1.Object), (extensionOptionsContainer2, extensionServiceMock2.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer1, extensionOptionsContainer2); var cacheServiceMock = new Mock <ICacheService>(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheServiceMock.Object, Logger); var localizer = factory.Create(typeof(JsonStringLocalizerFactoryTest)); Assert.NotNull(localizer); Assert.Equal(value2, localizer[key]); }
public async Task ItShouldLoadParentCultureLocalyzer(bool enableHierarchyLoading) { var map = new Dictionary <string, string>(); // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); // Setup extension service var extensionServiceMock = new Mock <IJsonLocalizationExtensionService>(); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo)) .ReturnsAsync(map, TimeSpan.FromMilliseconds(100)); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo.Parent)) .ReturnsAsync(map, TimeSpan.FromMilliseconds(100)); // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer, extensionServiceMock.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer); // We need the real cache service because otherwise the asynchronous parent localizer will be created every time. var cacheService = new CacheService(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheService, Logger); var localizer = factory.Create(typeof(JsonStringLocalizerFactoryTest)); Assert.NotNull(localizer); // make sure the localizer data are loaded. await localizer.LoadAsync(enableHierarchyLoading).ConfigureAwait(false); // verify the parent hierarchy loading behavior. extensionServiceMock.Verify(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo), Times.Once); extensionServiceMock.Verify(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo.Parent), enableHierarchyLoading ? Times.Once : Times.Never); }
public void ItShouldGetTheAppropriateExtensionService() { var serviceProviderMock = new Mock <IServiceProvider>(); serviceProviderMock .Setup(p => p.GetService(typeof(IJsonLocalizationExtensionService <MyOptions>))) .Returns(new MyExtensionService()); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); var extensionResolverService = new ExtensionResolverService(serviceProviderMock.Object); var extensionService = extensionResolverService.GetExtensionService(extensionOptionsContainer); Assert.NotNull(extensionService); serviceProviderMock.Verify(p => p.GetService(typeof(IJsonLocalizationExtensionService <MyOptions>))); serviceProviderMock.VerifyNoOtherCalls(); }
public void ItShouldCreateAnAsynchronousLocalizerIfTheExtensionServiceIsAsynchronous() { var key = "key"; var value = "value"; var map = new Dictionary <string, string> { [key] = value, }; // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); // Setup extension service var extensionServiceMock = new Mock <IJsonLocalizationExtensionService>(); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo)) .ReturnsAsync(map, TimeSpan.FromMilliseconds(100)); // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer, extensionServiceMock.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer); var cacheServiceMock = new Mock <ICacheService>(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheServiceMock.Object, Logger); var localizer = factory.Create(typeof(JsonStringLocalizerFactoryTest)); Assert.NotNull(localizer); var proxy = Assert.IsType <StringLocalizerProxy>(localizer); Assert.IsType <JsonStringLocalizerAsync>(proxy.CurrentStringLocalizer); }
private void RunBasicFactoryTest(Func <JsonStringLocalizerFactory, IStringLocalizer> getLocalizer) { var key = "key"; var value = "value"; var map = new Dictionary <string, string> { [key] = value, }; // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); // Setup extension service var extensionServiceMock = SetupExtensionServiceMock(map, extensionOptionsContainer); // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer, extensionServiceMock.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer); var cacheServiceMock = new Mock <ICacheService>(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheServiceMock.Object, Logger); var localizer = getLocalizer(factory); Assert.NotNull(localizer); Assert.Equal(value, localizer[key]); }
private static Mock <IJsonLocalizationExtensionService> SetupExtensionServiceMock(Dictionary <string, string> map, ExtensionOptionsContainer <MyOptions> extensionOptionsContainer) { var extensionServiceMock = new Mock <IJsonLocalizationExtensionService>(); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo)) .ReturnsAsync(map); return(extensionServiceMock); }
public async Task ItShouldUseParentCultureLocalyzerWhenKeyNotFound(bool isAsynchronous) { var key = "key"; var value = "value"; var map = new Dictionary <string, string> { [key] = value, }; var key2 = "key2"; var value2 = "value2"; var map2 = new Dictionary <string, string> { [key2] = value2, }; var unknownKey = "test"; // Setup CultureInfo service mock. var cultureInfoServiceMock = SetupCultureInfoServiceMock(); var extensionOptionsContainer = new ExtensionOptionsContainer <MyOptions>(new MyOptions()); // Setup extension service var extensionServiceMock = new Mock <IJsonLocalizationExtensionService>(); if (isAsynchronous) { extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo)) .ReturnsAsync(map, TimeSpan.FromMilliseconds(100)); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo.Parent)) .ReturnsAsync(map2, TimeSpan.FromMilliseconds(100)); } else { extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo)) .ReturnsAsync(map); extensionServiceMock .Setup(s => s.TryLoadAsync(extensionOptionsContainer.Options, Assembly, BaseName, CultureInfo.Parent)) .ReturnsAsync(map2); } // Setup extension resolver service. var extensionResolverServiceMock = SetupResolverServiceMock( (extensionOptionsContainer, extensionServiceMock.Object)); var optionsMock = SetupJsonLocalizationOptionsMock(extensionOptionsContainer); // We need the real cache service because otherwise the asynchronous parent localizer will be created every time. var cacheService = new CacheService(); var factory = new JsonStringLocalizerFactory( optionsMock.Object, cultureInfoServiceMock.Object, extensionResolverServiceMock.Object, cacheService, Logger); var localizer = factory.Create(typeof(JsonStringLocalizerFactoryTest)); Assert.NotNull(localizer); if (isAsynchronous) { // make sure the localizer data are loaded. await localizer.LoadAsync(true).ConfigureAwait(false); } Assert.Equal(value, localizer[key]); Assert.Equal(value2, localizer[key2]); Assert.Equal(unknownKey, localizer[unknownKey]); var strings = localizer.GetAllStrings(false); var allStrings = localizer.GetAllStrings(true); Assert.Single(strings); Assert.Equal(2, allStrings.Count()); }