Skip to content

Commit 4557e27

Browse files
committed
test websocket serialization
1 parent e2402cb commit 4557e27

File tree

5 files changed

+51
-2
lines changed

5 files changed

+51
-2
lines changed

src/GraphQL.Client.Serializer.Newtonsoft/GraphQLWebSocketRequest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public GraphQLWebSocketRequest()
1717
public GraphQLWebSocketRequest(Abstractions.Websocket.GraphQLWebSocketRequest other) {
1818
Id = other.Id;
1919
Type = other.Type;
20-
Payload = new Newtonsoft.GraphQLRequest(other.Payload);
20+
Payload = new GraphQLRequest(other.Payload); // create serializer-specific type
2121
}
2222
}
2323
}

src/GraphQL.Client.Serializer.Newtonsoft/NewtonsoftJsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public string SerializeToString(GraphQL.GraphQLRequest request) {
3333
}
3434

3535
public byte[] SerializeToBytes(Abstractions.Websocket.GraphQLWebSocketRequest request) {
36-
var json = JsonConvert.SerializeObject(request, Options.JsonSerializerSettings);
36+
var json = JsonConvert.SerializeObject(new GraphQLWebSocketRequest(request), Options.JsonSerializerSettings);
3737
return Encoding.UTF8.GetBytes(json);
3838
}
3939

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ public void SerializeToStringTest(string expectedJson, GraphQLRequest request) {
3131
json.Should().Be(expectedJson.RemoveWhitespace());
3232
}
3333

34+
[Theory]
35+
[ClassData(typeof(SerializeToBytesTestData))]
36+
public void SerializeToBytesTest(string expectedJson, GraphQLWebSocketRequest request) {
37+
var json = Encoding.UTF8.GetString(Serializer.SerializeToBytes(request)).RemoveWhitespace();
38+
json.Should().Be(expectedJson.RemoveWhitespace());
39+
}
40+
41+
3442
[Fact]
3543
public async void WorksWithoutCamelCaseNamingStrategy() {
3644

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.Collections.Generic;
2+
using System.Linq;
3+
using System.Text;
24
using FluentAssertions;
35
using GraphQL.Client.Abstractions;
46
using GraphQL.Client.Abstractions.Websocket;
@@ -32,6 +34,13 @@ public void SerializeToStringTest(string expectedJson, GraphQLRequest request) {
3234
json.Should().BeEquivalentTo(expectedJson.RemoveWhitespace());
3335
}
3436

37+
[Theory]
38+
[ClassData(typeof(SerializeToBytesTestData))]
39+
public void SerializeToBytesTest(string expectedJson, GraphQLWebSocketRequest request) {
40+
var json = Encoding.UTF8.GetString(Serializer.SerializeToBytes(request)).RemoveWhitespace();
41+
json.Should().BeEquivalentTo(expectedJson.RemoveWhitespace());
42+
}
43+
3544
[Fact]
3645
public async void CanDeserializeExtensions() {
3746

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using GraphQL.Client.Abstractions.Websocket;
4+
using GraphQL.Client.Tests.Common.Chat;
5+
6+
namespace GraphQL.Client.Serializer.Tests.TestData {
7+
public class SerializeToBytesTestData : IEnumerable<object[]> {
8+
public IEnumerator<object[]> GetEnumerator() {
9+
yield return new object[] {
10+
"{\"id\":\"1234567\",\"type\":\"start\",\"payload\":{\"query\":\"simplequerystring\",\"operationName\":null,\"variables\":null}}",
11+
new GraphQLWebSocketRequest {
12+
Id = "1234567",
13+
Type = GraphQLWebSocketMessageType.GQL_START,
14+
Payload = new GraphQLRequest("simplequerystring")
15+
}
16+
};
17+
yield return new object[] {
18+
"{\"id\":\"34476567\",\"type\":\"start\",\"payload\":{\"query\":\"simplequerystring\",\"operationName\":null,\"variables\":{\"camelCaseProperty\":\"camelCase\",\"PascalCaseProperty\":\"PascalCase\"}}}",
19+
new GraphQLWebSocketRequest {
20+
Id = "34476567",
21+
Type = GraphQLWebSocketMessageType.GQL_START,
22+
Payload = new GraphQLRequest("simple query string", new { camelCaseProperty = "camelCase", PascalCaseProperty = "PascalCase"})
23+
}
24+
25+
};
26+
}
27+
28+
IEnumerator IEnumerable.GetEnumerator() {
29+
return GetEnumerator();
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)