Skip to content

Commit

Permalink
reworked serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelstaib committed Apr 17, 2020
1 parent 68c39a8 commit 49ee1ee
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 10 deletions.
19 changes: 10 additions & 9 deletions src/Core/Core/Execution/JsonQueryResultSerializer.cs
Expand Up @@ -128,7 +128,7 @@ private static void WriteLocations(Utf8JsonWriter writer, IReadOnlyList<Location

writer.WriteStartArray();

for (int i = 0; i < locations.Count; i++)
for (var i = 0; i < locations.Count; i++)
{
WriteLocation(writer, locations[i]);
}
Expand All @@ -153,7 +153,7 @@ private static void WritePath(Utf8JsonWriter writer, IReadOnlyList<object> path)

writer.WriteStartArray();

for (int i = 0; i < path.Count; i++)
for (var i = 0; i < path.Count; i++)
{
switch (path[i])
{
Expand Down Expand Up @@ -212,17 +212,15 @@ private static void WritePath(Utf8JsonWriter writer, IReadOnlyList<object> path)
{
writer.WriteStartArray();

for (int i = 0; i < list.Count; i++)
for (var i = 0; i < list.Count; i++)
{
WriteFieldValue(writer, list[i]);
}

writer.WriteEndArray();
}

private static void WriteFieldValue(
Utf8JsonWriter writer,
object value)
private static void WriteFieldValue(Utf8JsonWriter writer, object value)
{
if (value is null)
{
Expand Down Expand Up @@ -292,10 +290,13 @@ private static void WritePath(Utf8JsonWriter writer, IReadOnlyList<object> path)
writer.WriteStringValue(n.Value);
break;

case Uri u:
writer.WriteStringValue(u.ToString());
break;

default:
throw new NotSupportedException(
$"The specified type `{value.GetType().FullName}` " +
"is not supported by the result serializer.");
writer.WriteStringValue(value.ToString());
break;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Core/Types/Types/Scalars/UrlType.cs
Expand Up @@ -84,7 +84,7 @@ public override object Serialize(object value)

if (value is Uri uri)
{
return uri;
return uri.ToString();
}

throw new ScalarSerializationException(
Expand Down
38 changes: 38 additions & 0 deletions src/Server/AspNetCore.Tests/PostMiddlewareTests.cs
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
Expand Down Expand Up @@ -897,6 +898,38 @@ public async Task HttpPost_Ensure_Scoped_Services_Work()
result.MatchSnapshot();
}

[Fact]
public async Task JsonSerializer_Handles_Serialization_Correctly()
{
// arrange
TestServer server = ServerFactory.Create(
services =>
{
services.AddScoped<ScopedService>();
services.AddGraphQL(
SchemaBuilder.New()
.AddQueryType<Query>());
},
app =>
app.UseGraphQL());

var request =
@"
{
validUri
}
";
var contentType = "application/graphql";

// act
HttpResponseMessage message =
await server.SendPostRequestAsync(request, contentType, null);

// assert
ClientQueryResult result = await DeserializeAsync(message);
result.MatchSnapshot();
}

public class ScopedService
{
public int Count { get; private set; }
Expand All @@ -906,5 +939,10 @@ public void Increase()
Count += 1;
}
}

public class Query
{
public Uri ValidUri() => new Uri("https://github.com/ChilliCream/hotchocolate");
}
}
}
@@ -0,0 +1,7 @@
{
"Data": {
"validUri": "https://github.com/ChilliCream/hotchocolate"
},
"Errors": null,
"Extensions": null
}

0 comments on commit 49ee1ee

Please sign in to comment.