Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
2.0 KiB

// ==========================================================================
// JsonSerializerTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using FluentAssertions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Domain.Apps.Core.Schemas.Json;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json;
using Xunit;
namespace Squidex.Domain.Apps.Core.Model.Schemas.Json
{
public class JsonSerializerTests
{
private readonly JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
private readonly JsonSerializer serializer;
private readonly TypeNameRegistry typeNameRegistry = new TypeNameRegistry();
public JsonSerializerTests()
{
serializerSettings.SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry);
serializerSettings.ContractResolver = new ConverterContractResolver(
new InstantConverter(),
new LanguageConverter(),
new NamedGuidIdConverter(),
new NamedLongIdConverter(),
new NamedStringIdConverter(),
new RefTokenConverter(),
new SchemaConverter(new FieldRegistry(typeNameRegistry)),
new StringEnumConverter());
serializerSettings.TypeNameHandling = TypeNameHandling.Auto;
serializer = JsonSerializer.Create(serializerSettings);
}
[Fact]
public void Should_serialize_and_deserialize_schema()
{
var schemaSource = TestData.MixedSchema();
var schemaTarget = JToken.FromObject(schemaSource, serializer).ToObject<Schema>(serializer);
schemaTarget.ShouldBeEquivalentTo(schemaSource);
}
}
}