2025-08-07 09:08:09 +02:00
|
|
|
using System.Text.Json.Nodes;
|
2024-04-15 08:51:00 +02:00
|
|
|
using NUnit.Framework;
|
|
|
|
|
using Umbraco.Cms.Infrastructure.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Infrastructure.Serialization;
|
|
|
|
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class SystemTextJsonSerializerTests
|
|
|
|
|
{
|
|
|
|
|
[Test]
|
|
|
|
|
public void TryDeserialize_Can_Handle_JsonObject()
|
|
|
|
|
{
|
|
|
|
|
var json = JsonNode.Parse("{\"myProperty\":\"value\"}");
|
2025-08-07 09:08:09 +02:00
|
|
|
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
|
2024-04-15 08:51:00 +02:00
|
|
|
Assert.IsTrue(subject.TryDeserialize(json!, out MyItem myItem));
|
|
|
|
|
Assert.AreEqual("value", myItem.MyProperty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void TryDeserialize_Can_Handle_JsonArray()
|
|
|
|
|
{
|
|
|
|
|
var json = JsonNode.Parse("[{\"myProperty\":\"value1\"},{\"myProperty\":\"value2\"}]");
|
2025-08-07 09:08:09 +02:00
|
|
|
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
|
2024-04-15 08:51:00 +02:00
|
|
|
Assert.IsTrue(subject.TryDeserialize(json!, out MyItem[] myItems));
|
|
|
|
|
Assert.AreEqual(2, myItems.Length);
|
|
|
|
|
Assert.Multiple(() =>
|
|
|
|
|
{
|
|
|
|
|
Assert.AreEqual("value1", myItems[0].MyProperty);
|
|
|
|
|
Assert.AreEqual("value2", myItems[1].MyProperty);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void TryDeserialize_Can_Handle_JsonString()
|
|
|
|
|
{
|
|
|
|
|
var json = "{\"myProperty\":\"value\"}";
|
2025-08-07 09:08:09 +02:00
|
|
|
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
|
2024-04-15 08:51:00 +02:00
|
|
|
Assert.IsTrue(subject.TryDeserialize(json, out MyItem myItem));
|
|
|
|
|
Assert.AreEqual("value", myItem.MyProperty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void TryDeserialize_Cannot_Handle_RandomString()
|
|
|
|
|
{
|
2025-08-07 09:08:09 +02:00
|
|
|
var subject = new SystemTextJsonSerializer(new DefaultJsonSerializerEncoderFactory());
|
2024-04-15 08:51:00 +02:00
|
|
|
Assert.IsFalse(subject.TryDeserialize<MyItem>("something something", out _));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private class MyItem
|
|
|
|
|
{
|
|
|
|
|
public required string MyProperty { get; set; }
|
|
|
|
|
}
|
|
|
|
|
}
|