45 lines
2.2 KiB
C#
45 lines
2.2 KiB
C#
using System.Text.Json;
|
|
using Elsa.Expressions.Models;
|
|
using Elsa.Expressions.JavaScript.Contracts;
|
|
using Elsa.Testing.Shared;
|
|
using Elsa.Workflows.Memory;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Xunit;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace Elsa.Expressions.JavaScript.IntegrationTests;
|
|
|
|
public class ToJsonTests(ITestOutputHelper testOutputHelper)
|
|
{
|
|
private readonly IServiceProvider _serviceProvider = new TestApplicationBuilder(testOutputHelper).Build();
|
|
|
|
[Fact(DisplayName = "Serialize large unicode string using JavaScript's toJson function")]
|
|
public async Task Test1()
|
|
{
|
|
var javaScriptEvaluator = _serviceProvider.GetRequiredService<IJavaScriptEvaluator>();
|
|
var unicodeString = UnicodeRangeGenerator.GenerateUnicodeString();
|
|
var script = $"toJson({{ text: '{unicodeString}' }})";
|
|
var expressionExecutionContext = new ExpressionExecutionContext(_serviceProvider, new MemoryRegister());
|
|
var result = (string)(await javaScriptEvaluator.EvaluateAsync(script, typeof(string), expressionExecutionContext))!;
|
|
var serializedText = JsonDocument.Parse(result).RootElement.GetProperty("text").GetString();
|
|
Assert.Equal(unicodeString, serializedText);
|
|
}
|
|
|
|
[Fact(DisplayName = "Serialize large unicode string using JavaScript's toJson function from a workflow variable")]
|
|
public async Task Test2()
|
|
{
|
|
var javaScriptEvaluator = _serviceProvider.GetRequiredService<IJavaScriptEvaluator>();
|
|
var expressionExecutionContext = new ExpressionExecutionContext(_serviceProvider, new MemoryRegister());
|
|
var unicodeString = UnicodeRangeGenerator.GenerateUnicodeString();
|
|
var payloadVariable = new Variable<object>("Payload", null!);
|
|
var payload = new
|
|
{
|
|
Text = unicodeString
|
|
};
|
|
payloadVariable.Set(expressionExecutionContext, payload);
|
|
var script = "toJson(getPayload())";
|
|
var result = (string)(await javaScriptEvaluator.EvaluateAsync(script, typeof(string), expressionExecutionContext))!;
|
|
var serializedText = JsonDocument.Parse(result).RootElement.GetProperty("Text").GetString();
|
|
Assert.Equal(unicodeString, serializedText);
|
|
}
|
|
} |