Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer (#19849)

* Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer.

* Generalised JSON serialization encoder factory to work for all System.Tex.Json serializers.
Added the serializer's name as a parameter to allow for different encodings per serializer if required.

* Fixed tests by removing use of obsolete constructors.

* Removed name parameter and used a generic type instead.
This commit is contained in:
Andy Butland
2025-08-07 09:08:09 +02:00
committed by GitHub
parent 3a4e0b0654
commit 44aa5dcf1c
50 changed files with 194 additions and 87 deletions

View File

@@ -83,7 +83,7 @@ public class JsonBlockValueConverterTests
]
};
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(blockGridValue);
var deserialized = serializer.Deserialize<BlockGridValue>(serialized);
@@ -173,7 +173,7 @@ public class JsonBlockValueConverterTests
public void Can_Serialize_BlockGrid_Without_Blocks()
{
var blockGridValue = new BlockGridValue();
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(blockGridValue);
var deserialized = serializer.Deserialize<BlockGridValue>(serialized);
@@ -217,7 +217,7 @@ public class JsonBlockValueConverterTests
]
};
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(blockListValue);
var deserialized = serializer.Deserialize<BlockListValue>(serialized);
@@ -265,7 +265,7 @@ public class JsonBlockValueConverterTests
public void Can_Serialize_BlockList_Without_Blocks()
{
var blockListValue = new BlockListValue();
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(blockListValue);
var deserialized = serializer.Deserialize<BlockListValue>(serialized);
@@ -315,7 +315,7 @@ public class JsonBlockValueConverterTests
Markup = "<p>This is some markup</p>"
};
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(richTextEditorValue);
var deserialized = serializer.Deserialize<RichTextEditorValue>(serialized);
@@ -371,7 +371,7 @@ public class JsonBlockValueConverterTests
Markup = "<p>This is some markup</p>"
};
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(richTextEditorValue);
var deserialized = serializer.Deserialize<RichTextEditorValue>(serialized);
@@ -425,7 +425,7 @@ public class JsonBlockValueConverterTests
]
};
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
var serialized = serializer.Serialize(blockListValue);
var deserialized = serializer.Deserialize<BlockListValue>(serialized);
@@ -467,7 +467,7 @@ public class JsonBlockValueConverterTests
}
""";
var serializer = new SystemTextJsonSerializer();
var serializer = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
Assert.DoesNotThrow(() => serializer.Deserialize<BlockListValue>(json));
}
}

View File

@@ -1,4 +1,4 @@
using System.Text.Json.Nodes;
using System.Text.Json.Nodes;
using NUnit.Framework;
using Umbraco.Cms.Infrastructure.Serialization;
@@ -11,7 +11,7 @@ public class SystemTextJsonSerializerTests
public void TryDeserialize_Can_Handle_JsonObject()
{
var json = JsonNode.Parse("{\"myProperty\":\"value\"}");
var subject = new SystemTextJsonSerializer();
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
Assert.IsTrue(subject.TryDeserialize(json!, out MyItem myItem));
Assert.AreEqual("value", myItem.MyProperty);
}
@@ -20,7 +20,7 @@ public class SystemTextJsonSerializerTests
public void TryDeserialize_Can_Handle_JsonArray()
{
var json = JsonNode.Parse("[{\"myProperty\":\"value1\"},{\"myProperty\":\"value2\"}]");
var subject = new SystemTextJsonSerializer();
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
Assert.IsTrue(subject.TryDeserialize(json!, out MyItem[] myItems));
Assert.AreEqual(2, myItems.Length);
Assert.Multiple(() =>
@@ -34,7 +34,7 @@ public class SystemTextJsonSerializerTests
public void TryDeserialize_Can_Handle_JsonString()
{
var json = "{\"myProperty\":\"value\"}";
var subject = new SystemTextJsonSerializer();
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
Assert.IsTrue(subject.TryDeserialize(json, out MyItem myItem));
Assert.AreEqual("value", myItem.MyProperty);
}
@@ -42,7 +42,7 @@ public class SystemTextJsonSerializerTests
[Test]
public void TryDeserialize_Cannot_Handle_RandomString()
{
var subject = new SystemTextJsonSerializer();
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
Assert.IsFalse(subject.TryDeserialize<MyItem>("something something", out _));
}