From 7794bb061a5b9d92e4e8a6466d4c1e973a96c9c6 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 28 Dec 2020 11:46:06 +0100 Subject: [PATCH] Test scripting. --- .../TestSuite.ApiTests/AssetFormatTests.cs | 1 - .../TestSuite/TestSuite.ApiTests/CDNTests.cs | 1 - .../TestSuite.ApiTests/ContentQueryTests.cs | 3 +- .../TestSuite.ApiTests/ContentUpdateTests.cs | 105 ++++++++++++++++++ .../TestSuite.ApiTests/LanguagesTests.cs | 1 - .../TestSuite/TestSuite.ApiTests/PingTests.cs | 1 - .../TestSuite.LoadTests/ReadingBenchmarks.cs | 1 - .../ReadingContentBenchmarks.cs | 1 - .../TestSuite.LoadTests/WritingBenchmarks.cs | 1 - .../Fixtures/ClientManagerFixture.cs | 1 + .../Fixtures/ContentQueryFixture.cs | 3 + .../TestSuite.Shared/Model/TestEntity.cs | 8 ++ 12 files changed, 118 insertions(+), 9 deletions(-) diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs index 72ab36d39..a35c6164b 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/AssetFormatTests.cs @@ -12,7 +12,6 @@ using TestSuite.Fixtures; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row #pragma warning disable CS0612 // Type or member is obsolete namespace TestSuite.ApiTests diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/CDNTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/CDNTests.cs index 8a9b2e569..a6735f680 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/CDNTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/CDNTests.cs @@ -12,7 +12,6 @@ using TestSuite.Model; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.ApiTests { diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/ContentQueryTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/ContentQueryTests.cs index 659215630..dcd2342ce 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/ContentQueryTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/ContentQueryTests.cs @@ -17,7 +17,6 @@ using TestSuite.Model; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.ApiTests { @@ -345,7 +344,7 @@ namespace TestSuite.ApiTests public int Number { get; set; } } - private void AssertItems(ContentsResult entities, int total, int[] expected) + private static void AssertItems(ContentsResult entities, int total, int[] expected) { Assert.Equal(total, entities.Total); Assert.Equal(expected, entities.Items.Select(x => x.Data.Number).ToArray()); diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs index 1b94a95a1..3947405d0 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs @@ -6,6 +6,8 @@ // ========================================================================== using System; +using System.Collections.Generic; +using System.Globalization; using System.Threading.Tasks; using Squidex.ClientLibrary; using Squidex.ClientLibrary.Management; @@ -132,6 +134,109 @@ namespace TestSuite.ApiTests } } + [Fact] + public async Task Should_create_content_with_scripting() + { + TestEntity content = null; + try + { + // STEP 1: Create a content item with a value that triggers the schema. + content = await _.Contents.CreateAsync(new TestEntityData { Number = -99 }, true); + + Assert.True(content.Data.Number > 0); + } + finally + { + if (content != null) + { + await _.Contents.DeleteAsync(content.Id); + } + } + } + + [Fact] + public async Task Should_create_bulk_content_with_scripting() + { + TestEntity content = null; + try + { + // STEP 1: Create content with a value that triggers the schema. + var results = await _.Contents.BulkUpdateAsync(new BulkUpdate + { + DoNotScript = false, + Jobs = new List + { + new BulkUpdateJob + { + Type = Squidex.ClientLibrary.BulkUpdateType.Upsert, + Data = new + { + number = new + { + iv = -99 + } + } + } + }, + Publish = true + }); + + + // STEP 2: Query content. + content = await _.Contents.GetAsync(results[0].ContentId); + + Assert.True(content.Data.Number > 0); + } + finally + { + if (content != null) + { + await _.Contents.DeleteAsync(content.Id); + } + } + } + + [Fact] + public async Task Should_create_bulk_content_with_scripting_but_disabled() + { + TestEntity content = null; + try + { + // STEP 1: Create content with a value that triggers the schema. + var results = await _.Contents.BulkUpdateAsync(new BulkUpdate + { + Jobs = new List + { + new BulkUpdateJob + { + Type = Squidex.ClientLibrary.BulkUpdateType.Upsert, + Data = new + { + number = new + { + iv = -99 + } + } + } + }, + Publish = true + }); + + + // STEP 2: Query content. + content = await _.Contents.GetAsync(results[0].ContentId); + + Assert.Equal(-99, content.Data.Number); + } + finally + { + if (content != null) + { + await _.Contents.DeleteAsync(content.Id); + } + } + } + [Fact] public async Task Should_create_non_published_item() { diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/LanguagesTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/LanguagesTests.cs index 5aaf19cf3..556fd01bd 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/LanguagesTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/LanguagesTests.cs @@ -10,7 +10,6 @@ using TestSuite.Fixtures; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.ApiTests { diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/PingTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/PingTests.cs index 0f95ce63f..a80acc004 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/PingTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/PingTests.cs @@ -10,7 +10,6 @@ using TestSuite.Fixtures; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.ApiTests { diff --git a/backend/tools/TestSuite/TestSuite.LoadTests/ReadingBenchmarks.cs b/backend/tools/TestSuite/TestSuite.LoadTests/ReadingBenchmarks.cs index f15cdbc24..6b8adf92c 100644 --- a/backend/tools/TestSuite/TestSuite.LoadTests/ReadingBenchmarks.cs +++ b/backend/tools/TestSuite/TestSuite.LoadTests/ReadingBenchmarks.cs @@ -12,7 +12,6 @@ using Xunit; using Xunit.Abstractions; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.LoadTests { diff --git a/backend/tools/TestSuite/TestSuite.LoadTests/ReadingContentBenchmarks.cs b/backend/tools/TestSuite/TestSuite.LoadTests/ReadingContentBenchmarks.cs index 3a6156a47..85e8a4f26 100644 --- a/backend/tools/TestSuite/TestSuite.LoadTests/ReadingContentBenchmarks.cs +++ b/backend/tools/TestSuite/TestSuite.LoadTests/ReadingContentBenchmarks.cs @@ -11,7 +11,6 @@ using Squidex.ClientLibrary; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.LoadTests { diff --git a/backend/tools/TestSuite/TestSuite.LoadTests/WritingBenchmarks.cs b/backend/tools/TestSuite/TestSuite.LoadTests/WritingBenchmarks.cs index c2d7cab06..acf21559b 100644 --- a/backend/tools/TestSuite/TestSuite.LoadTests/WritingBenchmarks.cs +++ b/backend/tools/TestSuite/TestSuite.LoadTests/WritingBenchmarks.cs @@ -12,7 +12,6 @@ using TestSuite.Model; using Xunit; #pragma warning disable SA1300 // Element should begin with upper-case letter -#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row namespace TestSuite.LoadTests { diff --git a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs index 0b9e78ca6..6d339ed9d 100644 --- a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs +++ b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs @@ -31,6 +31,7 @@ namespace TestSuite.Fixtures public virtual void Dispose() { + GC.SuppressFinalize(this); } } } diff --git a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ContentQueryFixture.cs b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ContentQueryFixture.cs index 3d88e3463..1e3c9cd51 100644 --- a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ContentQueryFixture.cs +++ b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ContentQueryFixture.cs @@ -5,6 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.Threading.Tasks; using TestSuite.Model; @@ -42,6 +43,8 @@ namespace TestSuite.Fixtures await Contents.DeleteAsync(content); } }).Wait(); + + GC.SuppressFinalize(this); } } } diff --git a/backend/tools/TestSuite/TestSuite.Shared/Model/TestEntity.cs b/backend/tools/TestSuite/TestSuite.Shared/Model/TestEntity.cs index 2ae39378c..52ca23503 100644 --- a/backend/tools/TestSuite/TestSuite.Shared/Model/TestEntity.cs +++ b/backend/tools/TestSuite/TestSuite.Shared/Model/TestEntity.cs @@ -39,6 +39,14 @@ namespace TestSuite.Model } } }, + Scripts = new SchemaScriptsDto + { + Create = $@" + if (ctx.data.{TestEntityData.NumberField}.iv === -99) {{ + ctx.data.{TestEntityData.NumberField}.iv = incrementCounter('my'); + replace(); + }}" + }, IsPublished = true });