diff --git a/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs b/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs index b682c76a..43d005f0 100644 --- a/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs +++ b/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs @@ -126,6 +126,27 @@ public void Serialize_ShouldSucceed_WhenUsingDefaultOptions() Assert.Contains("InnerTestModel_PropertyToCheckIfCamelCase", jsonString); } + [Fact] + public void DefaultOptions_ShouldAllowValuesToBeModifiedInEachInstances() + { + var serialization1 = new JsonNetApiClientSerialization(); + var serialization2 = new JsonNetApiClientSerialization(); + + AssertDefaultOptions(serialization1.DefaultOptions); + + serialization1.DefaultOptions.UseCamelCasePropertyNames = true; + serialization1.DefaultOptions.IgnoreNullValues = false; + serialization1.DefaultOptions.UseStringEnumConversion = true; + + Assert.True(serialization1.DefaultOptions.UseCamelCasePropertyNames); + Assert.False(serialization1.DefaultOptions.IgnoreNullValues); + Assert.True(serialization1.DefaultOptions.UseStringEnumConversion); + + // Ensure options for each instances are independent + + AssertDefaultOptions(serialization2.DefaultOptions); + } + [Fact] public void Serialize_ShouldNotCamelCaseBindVars_WhenSerializingPostCursorBody() { @@ -227,5 +248,12 @@ public void DeserializeFromStream_ShouldSucceed() Assert.Equal("myvalue", model.PropertyToCheckIfCamelCase); Assert.Equal("something", model.NullProperty); } + + private void AssertDefaultOptions(ApiClientSerializationOptions options) + { + Assert.False(options.UseCamelCasePropertyNames); + Assert.True(options.IgnoreNullValues); + Assert.False(options.UseStringEnumConversion); + } } } diff --git a/arangodb-net-standard/Serialization/ApiClientSerialization.cs b/arangodb-net-standard/Serialization/ApiClientSerialization.cs index 44a11a7f..1408a242 100644 --- a/arangodb-net-standard/Serialization/ApiClientSerialization.cs +++ b/arangodb-net-standard/Serialization/ApiClientSerialization.cs @@ -11,7 +11,7 @@ public abstract class ApiClientSerialization : IApiClientSerialization /// /// The default serialization options. /// - public virtual ApiClientSerializationOptions DefaultOptions => + public virtual ApiClientSerializationOptions DefaultOptions { get; } = new ApiClientSerializationOptions(false, true, false); ///