Skip to content

Commit 2545928

Browse files
committed
test basic functionality of serializer without camelCase
1 parent 949afca commit 2545928

File tree

13 files changed

+96
-9
lines changed

13 files changed

+96
-9
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using FluentAssertions;
5+
using GraphQL.Client.Abstractions;
6+
using GraphQL.Client.Abstractions.Websocket;
7+
using GraphQL.Client.LocalExecution;
8+
using GraphQL.Client.Serializer.Tests.TestData;
9+
using GraphQL.Client.Tests.Common;
10+
using GraphQL.Client.Tests.Common.Helpers;
11+
using Newtonsoft.Json;
12+
using Xunit;
13+
14+
namespace GraphQL.Client.Serializer.Tests {
15+
public abstract class BaseSerializeNoCamelCaseTest {
16+
17+
public IGraphQLWebsocketJsonSerializer Serializer { get; }
18+
public IGraphQLClient ChatClient { get; }
19+
public IGraphQLClient StarWarsClient { get; }
20+
21+
protected BaseSerializeNoCamelCaseTest(IGraphQLWebsocketJsonSerializer serializer) {
22+
Serializer = serializer;
23+
ChatClient = GraphQLLocalExecutionClient.New(Common.GetChatSchema(), serializer);
24+
StarWarsClient = GraphQLLocalExecutionClient.New(Common.GetStarWarsSchema(), serializer);
25+
}
26+
27+
[Theory]
28+
[ClassData(typeof(SerializeToStringTestData))]
29+
public void SerializeToStringTest(string expectedJson, GraphQLRequest request) {
30+
var json = Serializer.SerializeToString(request).RemoveWhitespace();
31+
json.Should().BeEquivalentTo(expectedJson.RemoveWhitespace());
32+
}
33+
34+
[Fact]
35+
public async void WorksWithoutCamelCaseNamingStrategy() {
36+
37+
const string message = "some random testing message";
38+
var graphQLRequest = new GraphQLRequest(
39+
@"mutation($input: MessageInputType){
40+
addMessage(message: $input){
41+
content
42+
}
43+
}",
44+
new {
45+
input = new {
46+
fromId = "2",
47+
content = message,
48+
sentAt = DateTime.Now
49+
}
50+
});
51+
var response = await ChatClient.SendMutationAsync(graphQLRequest, () => new { addMessage = new { content = "" } });
52+
53+
Assert.Equal(message, response.Data.addMessage.content);
54+
}
55+
}
56+
}

tests/GraphQL.Client.Serializer.Tests/BaseSerializerTest.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using GraphQL.Client.Tests.Common;
88
using GraphQL.Client.Tests.Common.Chat;
99
using GraphQL.Client.Tests.Common.Chat.Schema;
10+
using GraphQL.Client.Tests.Common.Helpers;
1011
using GraphQL.Client.Tests.Common.StarWars;
1112
using Xunit;
1213

@@ -27,8 +28,8 @@ protected BaseSerializerTest(IGraphQLWebsocketJsonSerializer serializer) {
2728
[Theory]
2829
[ClassData(typeof(SerializeToStringTestData))]
2930
public void SerializeToStringTest(string expectedJson, GraphQLRequest request) {
30-
var json = Serializer.SerializeToString(request);
31-
json.Should().BeEquivalentTo(expectedJson);
31+
var json = Serializer.SerializeToString(request).RemoveWhitespace();
32+
json.Should().BeEquivalentTo(expectedJson.RemoveWhitespace());
3233
}
3334

3435
[Fact]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
using GraphQL.Client.Serializer.Newtonsoft;
2+
using Newtonsoft.Json;
23

34
namespace GraphQL.Client.Serializer.Tests {
45
public class NewtonsoftSerializerTest : BaseSerializerTest {
56
public NewtonsoftSerializerTest() : base(new NewtonsoftJsonSerializer()) { }
67
}
8+
9+
public class NewtonsoftSerializeNoCamelCaseTest : BaseSerializeNoCamelCaseTest {
10+
public NewtonsoftSerializeNoCamelCaseTest()
11+
: base(new NewtonsoftJsonSerializer(options => options.JsonSerializerSettings = new JsonSerializerSettings())) { }
12+
}
713
}
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
using System.Text.Json;
2+
using Dahomey.Json;
13
using GraphQL.Client.Serializer.SystemTextJson;
24

35
namespace GraphQL.Client.Serializer.Tests {
46
public class SystemTextJsonSerializerTests: BaseSerializerTest {
5-
public SystemTextJsonSerializerTests() : base(new SystemTextJsonSerializer())
6-
{
7-
}
7+
public SystemTextJsonSerializerTests() : base(new SystemTextJsonSerializer()) { }
8+
}
9+
10+
public class SystemTextJsonSerializeNoCamelCaseTest : BaseSerializeNoCamelCaseTest {
11+
public SystemTextJsonSerializeNoCamelCaseTest()
12+
: base(new SystemTextJsonSerializer(options => options.JsonSerializerOptions = new JsonSerializerOptions().SetupExtensions())) { }
813
}
914
}

tests/GraphQL.Client.Serializer.Tests/TestData/SerializeToStringTestData.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ namespace GraphQL.Client.Serializer.Tests.TestData {
66
public class SerializeToStringTestData : IEnumerable<object[]> {
77
public IEnumerator<object[]> GetEnumerator() {
88
yield return new object[] {
9-
"{\"query\":\"simple query string\",\"operationName\":null,\"variables\":null}",
9+
"{\"query\":\"simplequerystring\",\"operationName\":null,\"variables\":null}",
1010
new GraphQLRequest("simple query string")
1111
};
12+
yield return new object[] {
13+
"{\"query\":\"simplequerystring\",\"operationName\":null,\"variables\":{\"camelCaseProperty\":\"test\",\"pascalCaseProperty\":\"test\"}}",
14+
new GraphQLRequest("simple query string", new { camelCaseProperty = "test", PascalCaseProperty = "test"})
15+
};
1216
}
1317

1418
IEnumerator IEnumerable.GetEnumerator() {

tests/GraphQL.Client.Tests.Common/GraphQL.Client.Tests.Common.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.1" />
1212
<PackageReference Include="System.Reactive" Version="4.3.2" />
1313
<PackageReference Include="System.Reactive.Compatibility" Version="4.3.2" />
14+
<PackageReference Include="xunit" Version="2.4.0" />
1415
</ItemGroup>
1516

1617
<ItemGroup>

tests/GraphQL.Integration.Tests/Helpers/CallbackTester.cs renamed to tests/GraphQL.Client.Tests.Common/Helpers/CallbackTester.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Threading;
33
using Xunit;
44

5-
namespace GraphQL.Integration.Tests.Helpers {
5+
namespace GraphQL.Client.Tests.Common.Helpers {
66
public class CallbackTester<T> {
77
private ManualResetEventSlim _callbackInvoked { get; } = new ManualResetEventSlim();
88

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.Linq;
2+
3+
namespace GraphQL.Client.Tests.Common.Helpers {
4+
public static class MiscellaneousExtensions {
5+
public static string RemoveWhitespace(this string input) {
6+
return new string(input.ToCharArray()
7+
.Where(c => !char.IsWhiteSpace(c))
8+
.ToArray());
9+
}
10+
}
11+
}

tests/GraphQL.Integration.Tests/Helpers/NetworkHelpers.cs renamed to tests/GraphQL.Client.Tests.Common/Helpers/NetworkHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Net;
22
using System.Net.Sockets;
33

4-
namespace GraphQL.Integration.Tests.Helpers {
4+
namespace GraphQL.Client.Tests.Common.Helpers {
55
public static class NetworkHelpers {
66
public static int GetFreeTcpPortNumber() {
77
var l = new TcpListener(IPAddress.Loopback, 0);

tests/GraphQL.Integration.Tests/Helpers/ObservableTester.cs renamed to tests/GraphQL.Client.Tests.Common/Helpers/ObservableTester.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Threading;
33
using Xunit;
44

5-
namespace GraphQL.Integration.Tests.Helpers {
5+
namespace GraphQL.Client.Tests.Common.Helpers {
66
public class ObservableTester<T> : IDisposable {
77
private readonly IDisposable _subscription;
88
private ManualResetEventSlim _updateReceived { get; } = new ManualResetEventSlim();

0 commit comments

Comments
 (0)