Browse Source

Fix domain id in scripting.

pull/641/head
Sebastian 5 years ago
parent
commit
661373623b
  1. 4
      backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/DefaultConverter.cs
  2. 21
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs
  3. 17
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Templates/FluidTemplateEngineTests.cs

4
backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/DefaultConverter.cs

@ -14,6 +14,7 @@ using Jint.Runtime.Interop;
using NodaTime;
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Scripting.ContentWrapper;
using Squidex.Infrastructure;
using Squidex.Shared.Users;
namespace Squidex.Domain.Apps.Core.Scripting
@ -44,6 +45,9 @@ namespace Squidex.Domain.Apps.Core.Scripting
case ClaimsPrincipal principal:
result = JintUser.Create(engine, principal);
return true;
case DomainId domainId:
result = domainId.ToString();
return true;
case Guid guid:
result = guid.ToString();
return true;

21
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs

@ -16,6 +16,7 @@ using Microsoft.Extensions.Options;
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Scripting;
using Squidex.Domain.Apps.Core.Scripting.Extensions;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Security;
using Squidex.Infrastructure.Validation;
using Xunit;
@ -288,7 +289,6 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting
getJSON('http://squidex.io', function(result) {
data.operation = { iv: result.key };
});
";
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => sut.TransformAsync(context, script, contentOptions));
@ -438,5 +438,24 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting
Assert.False(result);
}
[Fact]
public void Should_handle_domain_id_as_string()
{
var id = DomainId.NewGuid();
const string script = @"
return value;
";
var context = new ScriptVars
{
["value"] = id
};
var result = sut.Execute(context, script);
Assert.Equal(id.ToString(), result.ToString());
}
}
}

17
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Templates/FluidTemplateEngineTests.cs

@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Templates
[Theory]
[InlineData("{{ e.id }}", "42,my-app")]
[InlineData("{{ e.id.name}}", "my-app")]
[InlineData("{{ e.id.name }}", "my-app")]
[InlineData("{{ e.id.id }}", "42")]
public async Task Should_render_named_id(string template, string expected)
{
@ -64,6 +64,21 @@ namespace Squidex.Domain.Apps.Core.Operations.Templates
Assert.Equal(expected, result);
}
[Fact]
public async Task Should_format_domain_id()
{
var value = new
{
Id = DomainId.NewGuid()
};
var template = "{{ e.id }}";
var result = await RenderAync(template, value);
Assert.Equal(value.Id.ToString(), result);
}
[Fact]
public async Task Should_format_enum()
{

Loading…
Cancel
Save