From 661373623b108e3218303290d9f4c608195e749f Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 4 Feb 2021 20:29:36 +0100 Subject: [PATCH] Fix domain id in scripting. --- .../Scripting/DefaultConverter.cs | 4 ++++ .../Scripting/JintScriptEngineTests.cs | 23 +++++++++++++++++-- .../Templates/FluidTemplateEngineTests.cs | 17 +++++++++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/DefaultConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/DefaultConverter.cs index e69393de0..e97a2af35 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/DefaultConverter.cs +++ b/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; diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs index 3bd8d60e3..d59a508d2 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs +++ b/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; @@ -287,8 +288,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting getJSON('http://squidex.io', function(result) { data.operation = { iv: result.key }; - }); - + }); "; await Assert.ThrowsAnyAsync(() => 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()); + } } } diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Templates/FluidTemplateEngineTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Templates/FluidTemplateEngineTests.cs index b428b85d5..9fbfe2db6 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Templates/FluidTemplateEngineTests.cs +++ b/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() {