public static void Presence_of_concreteType_token_does_not_interfere_with_normal_deserialization() { // Arrange var expectedId = "year-field"; var expectedDecimalPlaces = 5; var expectedTitle = "my-title"; var year = new YearField(expectedId) { NumberOfDecimalPlaces = expectedDecimalPlaces, Title = expectedTitle, }; var serializer = new NaosJsonSerializer(typeof(GenericDiscoveryJsonConfiguration <Field>)); var jsonWithConcreteType = serializer.SerializeToString(year); var settings = new NullJsonConfiguration().BuildJsonSerializerSettings(SerializationDirection.Deserialize); settings.Converters = new JsonConverter[0]; // Act var actual = JsonConvert.DeserializeObject <YearField>(jsonWithConcreteType, settings); // Assert typeof(YearField).IsAssignableTo(typeof(Field)).Should().BeTrue(); jsonWithConcreteType.Should().Contain("$concreteType"); actual.Id.Should().Be(expectedId); actual.NumberOfDecimalPlaces.Should().Be(expectedDecimalPlaces); actual.Title.Should().Be(expectedTitle); }
public static void RoundtripSerializeDeserialize___Using_Field_NumberField_YearField__Works() { // Arrange var bsonConfigType = typeof(GenericDiscoveryBsonConfiguration <Field>); var jsonConfigType = typeof(GenericDiscoveryJsonConfiguration <Field>); var expectedId1 = "my-field-1"; var expectedId2 = "my-field-2"; var expectedTitle1 = "my-title-1"; var expectedTitle2 = "my-title-2"; var expectedNumberOfDecimalPlaces1 = 2; var expectedNumberOfDecimalPlaces2 = 4; var expected1 = new NumberField(expectedId1) { Title = expectedTitle1, NumberOfDecimalPlaces = expectedNumberOfDecimalPlaces1, }; var expected2 = new YearField(expectedId2) { Title = expectedTitle2, NumberOfDecimalPlaces = expectedNumberOfDecimalPlaces2, }; void ThrowIfObjectsDiffer1(DescribedSerialization serialized, NumberField deserialized) { (deserialized is YearField).Should().BeFalse(); deserialized.Should().NotBeNull(); deserialized.Id.Should().Be(expectedId1); deserialized.FieldDataKind.Should().Be(FieldDataKind.NumberWithDecimals); deserialized.NumberOfDecimalPlaces.Should().Be(expectedNumberOfDecimalPlaces1); deserialized.Title.Should().Be(expectedTitle1); } void ThrowIfObjectsDiffer2(DescribedSerialization serialized, YearField deserialized) { deserialized.Should().NotBeNull(); deserialized.Id.Should().Be(expectedId2); deserialized.FieldDataKind.Should().Be(FieldDataKind.Year); deserialized.NumberOfDecimalPlaces.Should().Be(expectedNumberOfDecimalPlaces2); deserialized.Title.Should().Be(expectedTitle2); } // Act & Assert expected1.RoundtripSerializeWithCallback(ThrowIfObjectsDiffer1, jsonConfigType, bsonConfigType); expected2.RoundtripSerializeWithCallback(ThrowIfObjectsDiffer2, jsonConfigType, bsonConfigType); }