未验证 提交 a5151c30 编写于 作者: B Brayden Streibel 提交者: GitHub

Fix parameterized input serialization (#563)

上级 600c902c
......@@ -104,10 +104,10 @@ public class ${className} implements GraphQLParametrizedInput {
<#if fields?has_content>
<#list fields as field>
<#if MapperUtil.isJavaPrimitive(field.type)>
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}));
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>));
<#else>
if (${field.name} != null) {
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}));
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>));
}
</#if>
</#list>
......
......@@ -8,6 +8,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.Collections;
import java.util.Objects;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
......@@ -31,6 +32,8 @@ class GraphQLCodegenRequestTest {
mappingConfig.setGenerateEqualsAndHashCode(true);
mappingConfig.setGenerateToString(false); // should be overridden to true
mappingConfig.setGenerateApis(false);
mappingConfig.putCustomTypeMappingIfAbsent("DateTime", "java.time.ZonedDateTime");
mappingConfig.setUseObjectMapperForRequestSerialization(singleton("DateTime"));
}
@AfterEach
......@@ -228,4 +231,4 @@ class GraphQLCodegenRequestTest {
getFileByName(files, "QueryINeedQueryRequest.java"));
}
}
\ No newline at end of file
}
......@@ -23,14 +23,13 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.function.Function;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.*;
class GraphQLRequestSerializerTest {
......@@ -281,6 +280,35 @@ class GraphQLRequestSerializerTest {
assertEquals(expectedQueryDecorator.apply(expectedQueryStr), serializedQuery);
}
@ParameterizedTest(name = "{0}")
@MethodSource("provideAllSerializers")
void serialize_UseObjectMapperForParameterizedInput(String name, Function<GraphQLRequest, String> serializer, Function<String, String> expectedQueryDecorator) {
GraphQLRequestSerializer.OBJECT_MAPPER.registerModule(
new SimpleModule().addSerializer(new ZonedDateTimeSerializer()));
EventsByCategoryAndStatusQueryRequest request = new EventsByCategoryAndStatusQueryRequest.Builder()
.setCategoryId("categoryIdValue1")
.setStatus(Status.OPEN)
.build();
GraphQLRequest graphQLRequest = new GraphQLRequest(request,
new EventResponseProjection()
.properties(new EventPropertyResponseProjection()
.child(new EventPropertyResponseProjection()
.parent(new EventPropertyParentParametrizedInput()
.createdAfter(ZonedDateTime.of(2007, 1, 9, 9, 41, 0, 0, ZoneOffset.UTC)),
new EventResponseProjection()
.id())))
);
String serializedQuery = serializer.apply(graphQLRequest).replaceAll(" +", " ").trim();
String expectedQueryStr = "query { " +
"eventsByCategoryAndStatus(categoryId: \"categoryIdValue1\", status: OPEN){ " +
"properties { " +
"child { parent (createdAfter: \"2007-01-09T09:41:00Z\") { id } } } " +
"} " +
"}";
assertEquals(expectedQueryDecorator.apply(expectedQueryStr), serializedQuery);
}
@ParameterizedTest(name = "{0}")
@MethodSource("provideAllSerializers")
void serialize_complexRequest(String name, Function<GraphQLRequest, String> serializer, Function<String, String> expectedQueryDecorator) {
......@@ -440,4 +468,4 @@ class GraphQLRequestSerializerTest {
return String.format("{\"query\":\"%s\"}", expectedQueryDecorator.replace("\\", "\\\\").replace("\"", "\\\""));
}
}
\ No newline at end of file
}
......@@ -2,9 +2,8 @@ package com.kobylynskyi.graphql.codegen.model.graphql.data;
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLParametrizedInput;
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.Objects;
/**
* Parametrized input for field parent in type EventProperty
......@@ -12,12 +11,14 @@ import java.util.StringJoiner;
public class EventPropertyParentParametrizedInput implements GraphQLParametrizedInput {
private Status withStatus;
private java.time.ZonedDateTime createdAfter;
public EventPropertyParentParametrizedInput() {
}
public EventPropertyParentParametrizedInput(Status withStatus) {
public EventPropertyParentParametrizedInput(Status withStatus, java.time.ZonedDateTime createdAfter) {
this.withStatus = withStatus;
this.createdAfter = createdAfter;
}
public EventPropertyParentParametrizedInput withStatus(Status withStatus) {
......@@ -25,6 +26,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return this;
}
public EventPropertyParentParametrizedInput createdAfter(java.time.ZonedDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
......@@ -34,12 +40,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return false;
}
final EventPropertyParentParametrizedInput that = (EventPropertyParentParametrizedInput) obj;
return Objects.equals(withStatus, that.withStatus);
return Objects.equals(withStatus, that.withStatus)
&& Objects.equals(createdAfter, that.createdAfter);
}
@Override
public int hashCode() {
return Objects.hash(withStatus);
return Objects.hash(withStatus, createdAfter);
}
@Override
......@@ -48,7 +55,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if (withStatus != null) {
joiner.add("withStatus: " + GraphQLRequestSerializer.getEntry(withStatus));
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true));
}
return joiner.toString();
}
}
\ No newline at end of file
}
......@@ -15,12 +15,14 @@ import java.util.Objects;
public class EventPropertyParentParametrizedInput implements GraphQLParametrizedInput {
private EventStatus withStatus;
private java.time.ZonedDateTime createdAfter;
public EventPropertyParentParametrizedInput() {
}
public EventPropertyParentParametrizedInput(EventStatus withStatus) {
public EventPropertyParentParametrizedInput(EventStatus withStatus, java.time.ZonedDateTime createdAfter) {
this.withStatus = withStatus;
this.createdAfter = createdAfter;
}
public EventPropertyParentParametrizedInput withStatus(EventStatus withStatus) {
......@@ -28,6 +30,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return this;
}
public EventPropertyParentParametrizedInput createdAfter(java.time.ZonedDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
......@@ -37,12 +44,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return false;
}
final EventPropertyParentParametrizedInput that = (EventPropertyParentParametrizedInput) obj;
return Objects.equals(withStatus, that.withStatus);
return Objects.equals(withStatus, that.withStatus)
&& Objects.equals(createdAfter, that.createdAfter);
}
@Override
public int hashCode() {
return Objects.hash(withStatus);
return Objects.hash(withStatus, createdAfter);
}
@Override
......@@ -51,7 +59,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if (withStatus != null) {
joiner.add("withStatus: " + GraphQLRequestSerializer.getEntry(withStatus));
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true));
}
return joiner.toString();
}
}
\ No newline at end of file
}
......@@ -15,12 +15,14 @@ import java.util.Objects;
public class EventPropertyParentParametrizedInput implements GraphQLParametrizedInput {
private EventStatusTO withStatus;
private java.time.ZonedDateTime createdAfter;
public EventPropertyParentParametrizedInput() {
}
public EventPropertyParentParametrizedInput(EventStatusTO withStatus) {
public EventPropertyParentParametrizedInput(EventStatusTO withStatus, java.time.ZonedDateTime createdAfter) {
this.withStatus = withStatus;
this.createdAfter = createdAfter;
}
public EventPropertyParentParametrizedInput withStatus(EventStatusTO withStatus) {
......@@ -28,6 +30,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return this;
}
public EventPropertyParentParametrizedInput createdAfter(java.time.ZonedDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
......@@ -37,12 +44,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return false;
}
final EventPropertyParentParametrizedInput that = (EventPropertyParentParametrizedInput) obj;
return Objects.equals(withStatus, that.withStatus);
return Objects.equals(withStatus, that.withStatus)
&& Objects.equals(createdAfter, that.createdAfter);
}
@Override
public int hashCode() {
return Objects.hash(withStatus);
return Objects.hash(withStatus, createdAfter);
}
@Override
......@@ -51,7 +59,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if (withStatus != null) {
joiner.add("withStatus: " + GraphQLRequestSerializer.getEntry(withStatus));
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true));
}
return joiner.toString();
}
}
\ No newline at end of file
}
......@@ -32,6 +32,6 @@ public interface EventPropertyResolver {
/**
* Parent event of the property
*/
Event parent(EventProperty eventProperty, EventStatus withStatus) throws Exception;
Event parent(EventProperty eventProperty, EventStatus withStatus, String createdAfter) throws Exception;
}
\ No newline at end of file
}
......@@ -77,7 +77,7 @@ type EventProperty @customResolver{
# Properties
child(first: Int, last: Int): [EventProperty]
# Parent event of the property
parent(withStatus: EventStatus): Event
parent(withStatus: EventStatus, createdAfter: DateTime): Event
}
# Custom DateTime scalar
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册