diff --git a/src/GraphQL.Client.LocalExecution/GraphQL.Client.LocalExecution.csproj b/src/GraphQL.Client.LocalExecution/GraphQL.Client.LocalExecution.csproj
index ebef7ea0..e8e162cb 100644
--- a/src/GraphQL.Client.LocalExecution/GraphQL.Client.LocalExecution.csproj
+++ b/src/GraphQL.Client.LocalExecution/GraphQL.Client.LocalExecution.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/GraphQL.Client.LocalExecution/GraphQLLocalExecutionClient.cs b/src/GraphQL.Client.LocalExecution/GraphQLLocalExecutionClient.cs
index f8fe6503..65098ae8 100644
--- a/src/GraphQL.Client.LocalExecution/GraphQLLocalExecutionClient.cs
+++ b/src/GraphQL.Client.LocalExecution/GraphQLLocalExecutionClient.cs
@@ -8,6 +8,7 @@
using System.Threading;
using System.Threading.Tasks;
using GraphQL.Client.Abstractions;
+using GraphQL.Client.Serializer.Newtonsoft;
using GraphQL.Subscription;
using GraphQL.Types;
using Newtonsoft.Json;
@@ -31,7 +32,7 @@ public class GraphQLLocalExecutionClient : IGraphQLClient where TSchema
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Converters = new List
{
- new GraphQLEnumConverter()
+ new ConstantCaseEnumConverter()
}
};
@@ -50,7 +51,7 @@ public GraphQLLocalExecutionClient(TSchema schema, IGraphQLJsonSerializer serial
Schema.Initialize();
_documentExecuter = new DocumentExecuter();
}
-
+
public void Dispose() { }
public Task> SendQueryAsync(GraphQLRequest request, CancellationToken cancellationToken = default)
@@ -80,7 +81,7 @@ private async Task>> ExecuteSubscriptionA
{
var result = await ExecuteAsync(request, cancellationToken);
var stream = ((SubscriptionExecutionResult)result).Streams?.Values.SingleOrDefault();
-
+
return stream == null
? Observable.Throw>(new InvalidOperationException("the GraphQL execution did not return an observable"))
: stream.SelectMany(executionResult => Observable.FromAsync(token => ExecutionResultToGraphQLResponse(executionResult, token)));
diff --git a/src/GraphQL.Client.LocalExecution/GraphQLEnumConverter.cs b/src/GraphQL.Client.Serializer.Newtonsoft/ConstantCaseEnumConverter.cs
similarity index 82%
rename from src/GraphQL.Client.LocalExecution/GraphQLEnumConverter.cs
rename to src/GraphQL.Client.Serializer.Newtonsoft/ConstantCaseEnumConverter.cs
index a02cf935..5eb45f73 100644
--- a/src/GraphQL.Client.LocalExecution/GraphQLEnumConverter.cs
+++ b/src/GraphQL.Client.Serializer.Newtonsoft/ConstantCaseEnumConverter.cs
@@ -1,13 +1,13 @@
using System;
using System.Linq;
using System.Reflection;
-using GraphQL.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
+using Panic.StringUtils.Extensions;
-namespace GraphQL.Client.LocalExecution
+namespace GraphQL.Client.Serializer.Newtonsoft
{
- public class GraphQLEnumConverter : StringEnumConverter
+ public class ConstantCaseEnumConverter : StringEnumConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
@@ -29,7 +29,7 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
}
else
{
- writer.WriteValue(StringUtils.ToConstantCase(memberName));
+ writer.WriteValue(memberName.ToConstantCase());
}
}
}
diff --git a/src/GraphQL.Client.Serializer.Newtonsoft/GraphQL.Client.Serializer.Newtonsoft.csproj b/src/GraphQL.Client.Serializer.Newtonsoft/GraphQL.Client.Serializer.Newtonsoft.csproj
index 4bbcb784..f603fc93 100644
--- a/src/GraphQL.Client.Serializer.Newtonsoft/GraphQL.Client.Serializer.Newtonsoft.csproj
+++ b/src/GraphQL.Client.Serializer.Newtonsoft/GraphQL.Client.Serializer.Newtonsoft.csproj
@@ -9,6 +9,7 @@
+
diff --git a/src/GraphQL.Client.Serializer.Newtonsoft/NewtonsoftJsonSerializer.cs b/src/GraphQL.Client.Serializer.Newtonsoft/NewtonsoftJsonSerializer.cs
index 5ec06c1a..e7cae90f 100644
--- a/src/GraphQL.Client.Serializer.Newtonsoft/NewtonsoftJsonSerializer.cs
+++ b/src/GraphQL.Client.Serializer.Newtonsoft/NewtonsoftJsonSerializer.cs
@@ -15,7 +15,8 @@ public class NewtonsoftJsonSerializer : IGraphQLWebsocketJsonSerializer
public static JsonSerializerSettings DefaultJsonSerializerSettings => new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver { IgnoreIsSpecifiedMembers = true },
- MissingMemberHandling = MissingMemberHandling.Ignore
+ MissingMemberHandling = MissingMemberHandling.Ignore,
+ Converters = { new ConstantCaseEnumConverter() }
};
public JsonSerializerSettings JsonSerializerSettings { get; }
diff --git a/src/GraphQL.Client.Serializer.SystemTextJson/ConstantCaseJsonNamingPolicy.cs b/src/GraphQL.Client.Serializer.SystemTextJson/ConstantCaseJsonNamingPolicy.cs
new file mode 100644
index 00000000..b2ea49eb
--- /dev/null
+++ b/src/GraphQL.Client.Serializer.SystemTextJson/ConstantCaseJsonNamingPolicy.cs
@@ -0,0 +1,10 @@
+using System.Text.Json;
+using Panic.StringUtils.Extensions;
+
+namespace GraphQL.Client.Serializer.SystemTextJson
+{
+ public class ConstantCaseJsonNamingPolicy: JsonNamingPolicy
+ {
+ public override string ConvertName(string name) => name.ToConstantCase();
+ }
+}
diff --git a/src/GraphQL.Client.Serializer.SystemTextJson/GraphQL.Client.Serializer.SystemTextJson.csproj b/src/GraphQL.Client.Serializer.SystemTextJson/GraphQL.Client.Serializer.SystemTextJson.csproj
index 9433b8dd..93fe58af 100644
--- a/src/GraphQL.Client.Serializer.SystemTextJson/GraphQL.Client.Serializer.SystemTextJson.csproj
+++ b/src/GraphQL.Client.Serializer.SystemTextJson/GraphQL.Client.Serializer.SystemTextJson.csproj
@@ -15,4 +15,8 @@
+
+
+
+
diff --git a/src/GraphQL.Client.Serializer.SystemTextJson/SystemTextJsonSerializer.cs b/src/GraphQL.Client.Serializer.SystemTextJson/SystemTextJsonSerializer.cs
index a1667ec8..d0325464 100644
--- a/src/GraphQL.Client.Serializer.SystemTextJson/SystemTextJsonSerializer.cs
+++ b/src/GraphQL.Client.Serializer.SystemTextJson/SystemTextJsonSerializer.cs
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Text.Json;
+using System.Text.Json.Serialization;
using System.Threading;
using System.Threading.Tasks;
using GraphQL.Client.Abstractions;
@@ -12,7 +13,8 @@ public class SystemTextJsonSerializer : IGraphQLWebsocketJsonSerializer
{
public static JsonSerializerOptions DefaultJsonSerializerOptions => new JsonSerializerOptions
{
- PropertyNamingPolicy = JsonNamingPolicy.CamelCase
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ Converters = { new JsonStringEnumConverter(new ConstantCaseJsonNamingPolicy(), false)}
}.SetupImmutableConverter();
public JsonSerializerOptions Options { get; }
diff --git a/tests/GraphQL.Client.Serializer.Tests/NewtonsoftSerializerTest.cs b/tests/GraphQL.Client.Serializer.Tests/NewtonsoftSerializerTest.cs
index 00b6d03b..43ade957 100644
--- a/tests/GraphQL.Client.Serializer.Tests/NewtonsoftSerializerTest.cs
+++ b/tests/GraphQL.Client.Serializer.Tests/NewtonsoftSerializerTest.cs
@@ -11,6 +11,6 @@ public NewtonsoftSerializerTest() : base(new NewtonsoftJsonSerializer()) { }
public class NewtonsoftSerializeNoCamelCaseTest : BaseSerializeNoCamelCaseTest
{
public NewtonsoftSerializeNoCamelCaseTest()
- : base(new NewtonsoftJsonSerializer(new JsonSerializerSettings())) { }
+ : base(new NewtonsoftJsonSerializer(new JsonSerializerSettings(){ Converters = { new ConstantCaseEnumConverter() } })) { }
}
}
diff --git a/tests/GraphQL.Client.Serializer.Tests/SystemTextJsonSerializerTests.cs b/tests/GraphQL.Client.Serializer.Tests/SystemTextJsonSerializerTests.cs
index 217c9da1..153bcd4d 100644
--- a/tests/GraphQL.Client.Serializer.Tests/SystemTextJsonSerializerTests.cs
+++ b/tests/GraphQL.Client.Serializer.Tests/SystemTextJsonSerializerTests.cs
@@ -1,4 +1,5 @@
using System.Text.Json;
+using System.Text.Json.Serialization;
using GraphQL.Client.Serializer.SystemTextJson;
namespace GraphQL.Client.Serializer.Tests
@@ -11,6 +12,6 @@ public SystemTextJsonSerializerTests() : base(new SystemTextJsonSerializer()) {
public class SystemTextJsonSerializeNoCamelCaseTest : BaseSerializeNoCamelCaseTest
{
public SystemTextJsonSerializeNoCamelCaseTest()
- : base(new SystemTextJsonSerializer(new JsonSerializerOptions().SetupImmutableConverter())) { }
+ : base(new SystemTextJsonSerializer(new JsonSerializerOptions(){Converters = { new JsonStringEnumConverter(new ConstantCaseJsonNamingPolicy(), false)}}.SetupImmutableConverter())) { }
}
}
diff --git a/tests/GraphQL.Client.Serializer.Tests/TestData/SerializeToStringTestData.cs b/tests/GraphQL.Client.Serializer.Tests/TestData/SerializeToStringTestData.cs
index 06208c21..e5285681 100644
--- a/tests/GraphQL.Client.Serializer.Tests/TestData/SerializeToStringTestData.cs
+++ b/tests/GraphQL.Client.Serializer.Tests/TestData/SerializeToStringTestData.cs
@@ -1,5 +1,7 @@
+using System;
using System.Collections;
using System.Collections.Generic;
+using System.Linq;
namespace GraphQL.Client.Serializer.Tests.TestData
{
@@ -19,8 +21,22 @@ public IEnumerator