From c8e77194b79949a350e618cb2f151e85cd6a4a8b Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sun, 25 Nov 2018 16:09:41 +0100 Subject: [PATCH] All tests green for core. --- .../HandleRules/RuleService.cs | 2 +- .../Json/Newtonsoft/JsonValueConverter.cs | 1 - .../Json/Objects/JsonObject.cs | 2 +- .../ConvertContent/FieldConvertersTests.cs | 4 +- .../ConvertContent/ValueConvertersTests.cs | 14 ++- .../HandleRules/RuleEventFormatterTests.cs | 41 ++------- .../HandleRules/RuleServiceTests.cs | 91 +++++++++---------- .../TestData.cs | 9 +- .../DefaultEventDataFormatterTests.cs | 2 +- .../Orleans/JsonExternalSerializerTests.cs | 2 +- .../TestHelpers/JsonHelper.cs | 16 ++-- 11 files changed, 74 insertions(+), 110 deletions(-) diff --git a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs index e85ca990d..8a5dbac53 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs +++ b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs @@ -109,7 +109,7 @@ namespace Squidex.Domain.Apps.Core.HandleRules var actionName = typeNameRegistry.GetName(actionType); var actionData = await actionHandler.CreateJobAsync(enrichedEvent, rule.Action); - var json = jsonSerializer.Serialize(actionData); + var json = jsonSerializer.Serialize(actionData.Data); var job = new RuleJob { diff --git a/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs b/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs index 949a3a90c..81825b5e1 100644 --- a/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs +++ b/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs @@ -7,7 +7,6 @@ using System; using System.Globalization; -using System.Linq; using Newtonsoft.Json; using Squidex.Infrastructure.Json.Objects; diff --git a/src/Squidex.Infrastructure/Json/Objects/JsonObject.cs b/src/Squidex.Infrastructure/Json/Objects/JsonObject.cs index fe70c43ff..a2cacce74 100644 --- a/src/Squidex.Infrastructure/Json/Objects/JsonObject.cs +++ b/src/Squidex.Infrastructure/Json/Objects/JsonObject.cs @@ -123,7 +123,7 @@ namespace Squidex.Infrastructure.Json.Objects public override string ToString() { - return $"{{{string.Join(", ", this.Select(x => $"\"{x.Key}\"={x.Value}\""))}}}"; + return $"{{{string.Join(", ", this.Select(x => $"\"{x.Key}\":{x.Value.ToJsonString()}"))}}}"; } } } diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs index d5b96a58d..0c2d23704 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs @@ -13,7 +13,6 @@ using Squidex.Domain.Apps.Core.Contents; using Squidex.Domain.Apps.Core.ConvertContent; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure; -using Squidex.Infrastructure.Json; using Squidex.Infrastructure.Json.Objects; using Xunit; @@ -22,7 +21,6 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent public class FieldConvertersTests { private readonly IAssetUrlGenerator assetUrlGenerator = A.Fake(); - private readonly IJsonSerializer serializer = TestData.DefaultSerializer(); private readonly LanguagesConfig languagesConfig = LanguagesConfig.Build(Language.EN, Language.DE); private readonly RootField jsonField = Fields.Json(1, "1", Partitioning.Invariant); private readonly RootField stringLanguageField = Fields.String(1, "1", Partitioning.Language); @@ -60,7 +58,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent new ContentFieldData() .AddValue("iv", JsonValue.Object()); - var actual = FieldConverters.ForValues(ValueConverters.EncodeJson(serializer))(input, jsonField); + var actual = FieldConverters.ForValues(ValueConverters.EncodeJson(TestData.DefaultSerializer))(input, jsonField); var expected = new ContentFieldData() diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs index ada3f0861..09d0c4bdc 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs @@ -7,7 +7,6 @@ using Squidex.Domain.Apps.Core.ConvertContent; using Squidex.Domain.Apps.Core.Schemas; -using Squidex.Infrastructure.Json; using Squidex.Infrastructure.Json.Objects; using Xunit; @@ -18,14 +17,13 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent private readonly RootField stringField = Fields.String(1, "1", Partitioning.Invariant); private readonly RootField jsonField = Fields.Json(1, "1", Partitioning.Invariant); private readonly RootField numberField = Fields.Number(1, "1", Partitioning.Invariant); - private readonly IJsonSerializer jsonSerializer = TestData.DefaultSerializer(); [Fact] public void Should_encode_json_value() { var source = JsonValue.Object(); - var result = ValueConverters.EncodeJson(jsonSerializer)(source, jsonField); + var result = ValueConverters.EncodeJson(TestData.DefaultSerializer)(source, jsonField); Assert.Equal(JsonValue.Create("e30="), result); } @@ -35,7 +33,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent { var source = JsonValue.Null; - var result = ValueConverters.EncodeJson(jsonSerializer)(source, jsonField); + var result = ValueConverters.EncodeJson(TestData.DefaultSerializer)(source, jsonField); Assert.Same(source, result); } @@ -45,7 +43,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent { var source = JsonValue.Create("NO-JSON"); - var result = ValueConverters.EncodeJson(jsonSerializer)(source, stringField); + var result = ValueConverters.EncodeJson(TestData.DefaultSerializer)(source, stringField); Assert.Same(source, result); } @@ -55,7 +53,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent { var source = JsonValue.Create("e30="); - var result = ValueConverters.DecodeJson(jsonSerializer)(source, jsonField); + var result = ValueConverters.DecodeJson(TestData.DefaultSerializer)(source, jsonField); Assert.Equal(JsonValue.Object(), result); } @@ -65,7 +63,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent { var source = JsonValue.Null; - var result = ValueConverters.DecodeJson(jsonSerializer)(source, jsonField); + var result = ValueConverters.DecodeJson(TestData.DefaultSerializer)(source, jsonField); Assert.Same(source, result); } @@ -75,7 +73,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent { var source = JsonValue.Null; - var result = ValueConverters.EncodeJson(jsonSerializer)(source, stringField); + var result = ValueConverters.EncodeJson(TestData.DefaultSerializer)(source, stringField); Assert.Same(source, result); } diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs index bee39a8eb..b2b58a49d 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs @@ -9,14 +9,12 @@ using System; using System.Collections.Generic; using System.Security.Claims; using FakeItEasy; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using NodaTime; using Squidex.Domain.Apps.Core.Contents; using Squidex.Domain.Apps.Core.HandleRules; using Squidex.Domain.Apps.Core.HandleRules.EnrichedEvents; using Squidex.Infrastructure; -using Squidex.Infrastructure.Json; +using Squidex.Infrastructure.Json.Objects; using Squidex.Shared.Identity; using Squidex.Shared.Users; using Xunit; @@ -25,7 +23,6 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules { public class RuleEventFormatterTests { - private readonly IJsonSerializer serializer = TestData.DefaultSerializer(); private readonly IUser user = A.Fake(); private readonly IRuleUrlGenerator urlGenerator = A.Fake(); private readonly NamedId appId = NamedId.Of(Guid.NewGuid(), "my-app"); @@ -41,7 +38,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules A.CallTo(() => user.Claims) .Returns(new List { new Claim(SquidexClaimTypes.DisplayName, "me") }); - sut = new RuleEventFormatter(serializer, urlGenerator); + sut = new RuleEventFormatter(TestData.DefaultSerializer, urlGenerator); } [Fact] @@ -198,7 +195,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", new JArray())) + .AddValue("iv", JsonValue.Array())) }; var result = sut.Format("$CONTENT_DATA.city.de.10", @event); @@ -215,8 +212,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", new JObject( - new JProperty("name", "Berlin")))) + .AddValue("iv", JsonValue.Object().Add("name", "Berlin"))) }; var result = sut.Format("$CONTENT_DATA.city.de.Name", @event); @@ -267,24 +263,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", JValue.CreateNull())) - }; - - var result = sut.Format("$CONTENT_DATA.city.iv", @event); - - Assert.Equal("UNDEFINED", result); - } - - [Fact] - public void Should_return_undefined_when_undefined() - { - var @event = new EnrichedContentEvent - { - Data = - new NamedContentData() - .AddField("city", - new ContentFieldData() - .AddValue("iv", JValue.CreateUndefined())) + .AddValue("iv", JsonValue.Null)) }; var result = sut.Format("$CONTENT_DATA.city.iv", @event); @@ -301,13 +280,12 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", new JObject( - new JProperty("name", "Berlin")))) + .AddValue("iv", JsonValue.Object().Add("name", "Berlin"))) }; var result = sut.Format("$CONTENT_DATA.city.iv", @event); - Assert.Equal(JObject.FromObject(new { name = "Berlin" }).ToString(Formatting.Indented), result); + Assert.Equal("{\"name\":\"Berlin\"}", result); } [Fact] @@ -319,7 +297,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", new JArray( + .AddValue("iv", JsonValue.Array( "Berlin"))) }; @@ -337,8 +315,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules new NamedContentData() .AddField("city", new ContentFieldData() - .AddValue("iv", new JObject( - new JProperty("name", "Berlin")))) + .AddValue("iv", JsonValue.Object().Add("name", "Berlin"))) }; var result = sut.Format("$CONTENT_DATA.city.iv.name", @event); diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs index 5b2d5b77b..35226e184 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs @@ -17,7 +17,6 @@ using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Contents; using Squidex.Infrastructure; using Squidex.Infrastructure.EventSourcing; -using Squidex.Infrastructure.Json; using Xunit; #pragma warning disable xUnit2009 // Do not use boolean check to check for string equality @@ -28,9 +27,12 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules { private readonly IRuleTriggerHandler ruleTriggerHandler = A.Fake(); private readonly IRuleActionHandler ruleActionHandler = A.Fake(); - private readonly IJsonSerializer serializer = TestData.DefaultSerializer(); private readonly IEventEnricher eventEnricher = A.Fake(); private readonly IClock clock = A.Fake(); + private readonly string actionData = "{\"value\":10}"; + private readonly string actionDump = "MyDump"; + private readonly string actionName = "ValidAction"; + private readonly string actionDescription = "MyDescription"; private readonly TypeNameRegistry typeNameRegistry = new TypeNameRegistry(); private readonly RuleService sut; @@ -38,12 +40,18 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules { } + public sealed class InvalidAction : RuleAction + { + } + public sealed class ValidAction : RuleAction { + public int Value { get; set; } } - public sealed class InvalidAction : RuleAction + public sealed class ValidData { + public int Value { get; set; } } public sealed class InvalidTrigger : RuleTrigger @@ -57,7 +65,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules public RuleServiceTests() { typeNameRegistry.Map(typeof(ContentCreated)); - typeNameRegistry.Map(typeof(ValidAction), "ValidAction"); + typeNameRegistry.Map(typeof(ValidAction), actionName); A.CallTo(() => eventEnricher.EnrichAsync(A>.Ignored)) .Returns(new EnrichedContentEvent()); @@ -65,16 +73,30 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules A.CallTo(() => ruleActionHandler.ActionType) .Returns(typeof(ValidAction)); + A.CallTo(() => ruleActionHandler.DataType) + .Returns(typeof(ValidData)); + A.CallTo(() => ruleTriggerHandler.TriggerType) .Returns(typeof(ContentChangedTrigger)); - sut = new RuleService(new[] { ruleTriggerHandler }, new[] { ruleActionHandler }, eventEnricher, serializer, clock, typeNameRegistry); + sut = new RuleService(new[] { ruleTriggerHandler }, new[] { ruleActionHandler }, eventEnricher, TestData.DefaultSerializer, clock, typeNameRegistry); + } + + [Fact] + public async Task Should_not_create_if_rule_disabled() + { + var ruleConfig = ValidRule().Disable(); + var ruleEnvelope = Envelope.Create(new ContentCreated()); + + var job = await sut.CreateJobAsync(ruleConfig, ruleEnvelope); + + Assert.Null(job); } [Fact] public async Task Should_not_create_job_for_invalid_event() { - var ruleConfig = new Rule(new ContentChangedTrigger(), new ValidAction()); + var ruleConfig = ValidRule(); var ruleEnvelope = Envelope.Create(new InvalidEvent()); var job = await sut.CreateJobAsync(ruleConfig, ruleEnvelope); @@ -107,7 +129,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules [Fact] public async Task Should_not_create_if_not_triggered() { - var ruleConfig = new Rule(new ContentChangedTrigger(), new ValidAction()); + var ruleConfig = ValidRule(); var ruleEnvelope = Envelope.Create(new ContentCreated()); A.CallTo(() => ruleTriggerHandler.Triggers(A>.Ignored, ruleConfig.Trigger)) @@ -125,14 +147,11 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules var now = SystemClock.Instance.GetCurrentInstant(); - var ruleConfig = new Rule(new ContentChangedTrigger(), new ValidAction()); + var ruleConfig = ValidRule(); var ruleEnvelope = Envelope.Create(@event); ruleEnvelope.SetTimestamp(now.Minus(Duration.FromDays(3))); - var actionData = "{}"; - var actionDescription = "MyDescription"; - A.CallTo(() => clock.GetCurrentInstant()) .Returns(now); @@ -154,15 +173,11 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules var now = SystemClock.Instance.GetCurrentInstant(); - var ruleConfig = new Rule(new ContentChangedTrigger(), new ValidAction()); + var ruleConfig = ValidRule(); var ruleEnvelope = Envelope.Create(@event); ruleEnvelope.SetTimestamp(now); - var actionName = "ValidAction"; - var actionData = "{}"; - var actionDescription = "MyDescription"; - A.CallTo(() => clock.GetCurrentInstant()) .Returns(now); @@ -170,7 +185,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules .Returns(true); A.CallTo(() => ruleActionHandler.CreateJobAsync(A.Ignored, ruleConfig.Action)) - .Returns((actionDescription, actionData)); + .Returns((actionDescription, new ValidData { Value = 10 })); var job = await sut.CreateJobAsync(ruleConfig, ruleEnvelope); @@ -189,14 +204,10 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules [Fact] public async Task Should_return_succeeded_job_with_full_dump_when_handler_returns_no_exception() { - var ruleJob = "{}"; - - var actionDump = "MyDump"; - - A.CallTo(() => ruleActionHandler.ExecuteJobAsync(ruleJob)) + A.CallTo(() => ruleActionHandler.ExecuteJobAsync(A.That.Matches(x => x.Value == 10))) .Returns((actionDump, null)); - var result = await sut.InvokeAsync("ValidAction", ruleJob); + var result = await sut.InvokeAsync(actionName, actionData); Assert.Equal(RuleResult.Success, result.Result); @@ -207,14 +218,10 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules [Fact] public async Task Should_return_failed_job_with_full_dump_when_handler_returns_exception() { - var ruleJob = "{}"; - - var actionDump = "MyDump"; - - A.CallTo(() => ruleActionHandler.ExecuteJobAsync(ruleJob)) + A.CallTo(() => ruleActionHandler.ExecuteJobAsync(A.That.Matches(x => x.Value == 10))) .Returns((actionDump, new InvalidOperationException())); - var result = await sut.InvokeAsync("ValidAction", ruleJob); + var result = await sut.InvokeAsync(actionName, actionData); Assert.Equal(RuleResult.Failed, result.Result); @@ -225,47 +232,35 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules [Fact] public async Task Should_return_timedout_job_with_full_dump_when_exception_from_handler_indicates_timeout() { - var ruleJob = "{}"; - - var actionDump = "MyDump"; - - A.CallTo(() => ruleActionHandler.ExecuteJobAsync(ruleJob)) + A.CallTo(() => ruleActionHandler.ExecuteJobAsync(A.That.Matches(x => x.Value == 10))) .Returns((actionDump, new TimeoutException())); - var result = await sut.InvokeAsync("ValidAction", ruleJob); + var result = await sut.InvokeAsync(actionName, actionData); Assert.Equal(RuleResult.Timeout, result.Result); Assert.True(result.Elapsed >= TimeSpan.Zero); Assert.True(result.Dump.StartsWith(actionDump, StringComparison.OrdinalIgnoreCase)); + Assert.True(result.Dump.IndexOf("Action timed out.", StringComparison.OrdinalIgnoreCase) >= 0); } [Fact] public async Task Should_create_exception_details_when_job_to_execute_failed() { - var ruleJob = "{}"; var ruleError = new InvalidOperationException(); - A.CallTo(() => ruleActionHandler.ExecuteJobAsync(ruleJob)) + A.CallTo(() => ruleActionHandler.ExecuteJobAsync(A.That.Matches(x => x.Value == 10))) .Throws(ruleError); - var result = await sut.InvokeAsync("ValidAction", ruleJob); + var result = await sut.InvokeAsync(actionName, actionData); Assert.Equal((ruleError.ToString(), RuleResult.Failed, TimeSpan.Zero), result); } - [Fact] - public async Task Should_not_create_if_rule_disabled() + private static Rule ValidRule() { - var ruleConfig = new Rule(new ContentChangedTrigger(), new ValidAction()); - var ruleEnvelope = Envelope.Create(new ContentCreated()); - - ruleConfig = ruleConfig.Disable(); - - var job = await sut.CreateJobAsync(ruleConfig, ruleEnvelope); - - Assert.Null(job); + return new Rule(new ContentChangedTrigger(), new ValidAction()); } } } diff --git a/tests/Squidex.Domain.Apps.Core.Tests/TestData.cs b/tests/Squidex.Domain.Apps.Core.Tests/TestData.cs index 530bc3a74..ca33bbd45 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/TestData.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/TestData.cs @@ -24,7 +24,9 @@ namespace Squidex.Domain.Apps.Core { public static class TestData { - public static IJsonSerializer DefaultSerializer() + public static readonly IJsonSerializer DefaultSerializer = CreateSerializer(); + + private static IJsonSerializer CreateSerializer() { var typeNameRegistry = new TypeNameRegistry(); @@ -38,6 +40,7 @@ namespace Squidex.Domain.Apps.Core new AppPatternsConverter(), new ClaimsPrincipalConverter(), new InstantConverter(), + new JsonValueConverter(), new LanguageConverter(), new LanguagesConfigConverter(), new NamedGuidIdConverter(), @@ -104,9 +107,7 @@ namespace Squidex.Domain.Apps.Core public static T SerializeAndDeserialize(this T value) { - var serializer = DefaultSerializer(); - - return serializer.Deserialize(serializer.Serialize(value)); + return DefaultSerializer.Deserialize(DefaultSerializer.Serialize(value)); } public static void TestFreeze(IFreezable freezable) diff --git a/tests/Squidex.Infrastructure.Tests/EventSourcing/DefaultEventDataFormatterTests.cs b/tests/Squidex.Infrastructure.Tests/EventSourcing/DefaultEventDataFormatterTests.cs index 1dad34b54..212352d04 100644 --- a/tests/Squidex.Infrastructure.Tests/EventSourcing/DefaultEventDataFormatterTests.cs +++ b/tests/Squidex.Infrastructure.Tests/EventSourcing/DefaultEventDataFormatterTests.cs @@ -34,7 +34,7 @@ namespace Squidex.Infrastructure.EventSourcing .Map(typeof(MyEvent), "Event") .Map(typeof(MyOldEvent), "OldEvent"); - sut = new DefaultEventDataFormatter(typeNameRegistry, JsonHelper.DefaultSerializer(typeNameRegistry)); + sut = new DefaultEventDataFormatter(typeNameRegistry, JsonHelper.CreateSerializer(typeNameRegistry)); } [Fact] diff --git a/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs b/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs index 608347c0c..11deb02cc 100644 --- a/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs @@ -20,7 +20,7 @@ namespace Squidex.Infrastructure.Orleans { public JsonExternalSerializerTests() { - J.DefaultSerializer = JsonHelper.DefaultSerializer(); + J.DefaultSerializer = JsonHelper.DefaultSerializer; } [Fact] diff --git a/tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs b/tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs index 76bb82676..9d913bdda 100644 --- a/tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs +++ b/tests/Squidex.Infrastructure.Tests/TestHelpers/JsonHelper.cs @@ -16,7 +16,9 @@ namespace Squidex.Infrastructure.TestHelpers { public static class JsonHelper { - public static IJsonSerializer DefaultSerializer(TypeNameRegistry typeNameRegistry = null) + public static readonly IJsonSerializer DefaultSerializer = CreateSerializer(); + + public static IJsonSerializer CreateSerializer(TypeNameRegistry typeNameRegistry = null) { var serializerSettings = new JsonSerializerSettings { @@ -43,23 +45,17 @@ namespace Squidex.Infrastructure.TestHelpers public static T SerializeAndDeserialize(this T value) { - var serializer = DefaultSerializer(); - - return serializer.Deserialize>(serializer.Serialize(Tuple.Create(value))).Item1; + return DefaultSerializer.Deserialize>(DefaultSerializer.Serialize(Tuple.Create(value))).Item1; } public static T Deserialize(string value) { - var serializer = DefaultSerializer(); - - return serializer.Deserialize>($"{{ \"Item1\": \"{value}\" }}").Item1; + return DefaultSerializer.Deserialize>($"{{ \"Item1\": \"{value}\" }}").Item1; } public static T Deserialize(object value) { - var serializer = DefaultSerializer(); - - return serializer.Deserialize>($"{{ \"Item1\": {value} }}").Item1; + return DefaultSerializer.Deserialize>($"{{ \"Item1\": {value} }}").Item1; } } }