// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Globalization; using System.Threading.Tasks; using Orleans; using Orleans.TestingHost; using Squidex.Infrastructure.Commands; using Xunit; #pragma warning disable SA1133 // Do not combine attributes namespace Squidex.Infrastructure.Commands { public class CommandRequestTests { public interface IContextGrain : IGrainWithStringKey { Task GetCultureUIAsync(CommandRequest request); Task GetCultureAsync(CommandRequest request); } public class ContextGrain : Grain, IContextGrain { public Task GetCultureAsync(CommandRequest request) { request.ApplyContext(); return Task.FromResult(CultureInfo.CurrentCulture.Name); } public Task GetCultureUIAsync(CommandRequest request) { request.ApplyContext(); return Task.FromResult(CultureInfo.CurrentUICulture.Name); } } [Fact] public void Should_capture_culture() { var culture = CultureInfo.GetCultureInfo("de"); var cultureUI = CultureInfo.GetCultureInfo("it"); CultureInfo.CurrentCulture = culture; CultureInfo.CurrentUICulture = cultureUI; var sut = CommandRequest.Create(null!); Assert.Same(culture.Name, sut.Culture); Assert.Same(cultureUI.Name, sut.CultureUI); } [Fact, Trait("Category", "Dependencies")] public async Task Should_communicate_with_orleans() { var cluster = new TestClusterBuilder(1) .Build(); await cluster.DeployAsync(); var culture = CultureInfo.GetCultureInfo("de"); var cultureUI = CultureInfo.GetCultureInfo("it"); CultureInfo.CurrentCulture = culture; CultureInfo.CurrentUICulture = cultureUI; var grain = cluster.Client.GetGrain("Default"); var request = CommandRequest.Create(null!); var cultureFromGrain = await grain.GetCultureAsync(request); var cultureUIFromGrain = await grain.GetCultureAsync(request); Assert.Same(culture.Name, cultureFromGrain); Assert.Same(cultureUI.Name, cultureUIFromGrain); } } }