From f2253c407f8f3919f20ec6675368d562acbeaefa Mon Sep 17 00:00:00 2001 From: Fedor Dudinskiy Date: Wed, 5 Jan 2022 14:55:19 +0100 Subject: [PATCH] +Basic coverage --- http/graphql/pom.xml | 30 ++++++++++++ .../io/quarkus/ts/http/graphql/Person.java | 22 +++++++++ .../ts/http/graphql/PersonsEndpoint.java | 24 ++++++++++ .../io/quarkus/ts/http/graphql/GraphQLIT.java | 46 +++++++++++++++++++ .../ts/http/graphql/OpenShiftGraphQLIT.java | 8 ++++ pom.xml | 1 + 6 files changed, 131 insertions(+) create mode 100644 http/graphql/pom.xml create mode 100644 http/graphql/src/main/java/io/quarkus/ts/http/graphql/Person.java create mode 100644 http/graphql/src/main/java/io/quarkus/ts/http/graphql/PersonsEndpoint.java create mode 100644 http/graphql/src/test/java/io/quarkus/ts/http/graphql/GraphQLIT.java create mode 100644 http/graphql/src/test/java/io/quarkus/ts/http/graphql/OpenShiftGraphQLIT.java diff --git a/http/graphql/pom.xml b/http/graphql/pom.xml new file mode 100644 index 0000000000..187110e7cd --- /dev/null +++ b/http/graphql/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + io.quarkus.ts.qe + parent + 1.0.0-SNAPSHOT + ../.. + + graphql + jar + Quarkus QE TS: HTTP: GraphQL + + + io.quarkus + quarkus-smallrye-graphql + + + + + deploy-to-openshift-using-extension + + + io.quarkus + quarkus-openshift + + + + + diff --git a/http/graphql/src/main/java/io/quarkus/ts/http/graphql/Person.java b/http/graphql/src/main/java/io/quarkus/ts/http/graphql/Person.java new file mode 100644 index 0000000000..eebe130e25 --- /dev/null +++ b/http/graphql/src/main/java/io/quarkus/ts/http/graphql/Person.java @@ -0,0 +1,22 @@ +package io.quarkus.ts.http.graphql; + +public class Person { + public String name; + private Person friend; + + public Person(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setFriend(Person friend) { + this.friend = friend; + } + + public Person getFriend() { + return friend; + } +} diff --git a/http/graphql/src/main/java/io/quarkus/ts/http/graphql/PersonsEndpoint.java b/http/graphql/src/main/java/io/quarkus/ts/http/graphql/PersonsEndpoint.java new file mode 100644 index 0000000000..3f7337fc1a --- /dev/null +++ b/http/graphql/src/main/java/io/quarkus/ts/http/graphql/PersonsEndpoint.java @@ -0,0 +1,24 @@ +package io.quarkus.ts.http.graphql; + +import org.eclipse.microprofile.graphql.Description; +import org.eclipse.microprofile.graphql.GraphQLApi; +import org.eclipse.microprofile.graphql.Query; + +@GraphQLApi +public class PersonsEndpoint { + private final Person[] philosophers; + + public PersonsEndpoint() { + final Person plato = new Person("Plato"); + final Person aristotle = new Person("Aristotle"); + plato.setFriend(aristotle); + aristotle.setFriend(plato); + philosophers = new Person[] { plato, aristotle }; + } + + @Query("philosophers") + @Description("Get a couple of Greek philosophers") + public Person[] getPhilosophers() { + return philosophers; + } +} diff --git a/http/graphql/src/test/java/io/quarkus/ts/http/graphql/GraphQLIT.java b/http/graphql/src/test/java/io/quarkus/ts/http/graphql/GraphQLIT.java new file mode 100644 index 0000000000..35dee787ec --- /dev/null +++ b/http/graphql/src/test/java/io/quarkus/ts/http/graphql/GraphQLIT.java @@ -0,0 +1,46 @@ +package io.quarkus.ts.http.graphql; + +import static io.restassured.RestAssured.given; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import io.quarkus.test.scenarios.QuarkusScenario; +import io.restassured.path.json.JsonPath; +import io.restassured.response.Response; + +@QuarkusScenario +public class GraphQLIT { + @Test + public void recursive() { + final String query = createQuery("philosophers{name,friend{name,friend{name}}}"); + final Response response = sendQuery(query); + final JsonPath json = response.jsonPath(); + Assertions.assertEquals("Plato", json.getString("data.philosophers[0].name")); + Assertions.assertEquals("Aristotle", json.getString("data.philosophers[0].friend.name")); + Assertions.assertEquals("Plato", json.getString("data.philosophers[0].friend.friend.name")); + } + + public static Response sendQuery(String query) { + return given().basePath("graphql") + .contentType("application/json") + .body(query) + .post(); + } + + public static String createQuery(String query) { + return new StringBuilder() + .append('{') + .append('"') + .append("query") + .append('"') + .append(':') + .append('"') + .append('{') + .append(query) + .append("}") + .append('"') + .append("}") + .toString(); + } +} diff --git a/http/graphql/src/test/java/io/quarkus/ts/http/graphql/OpenShiftGraphQLIT.java b/http/graphql/src/test/java/io/quarkus/ts/http/graphql/OpenShiftGraphQLIT.java new file mode 100644 index 0000000000..1bcd8f2c2a --- /dev/null +++ b/http/graphql/src/test/java/io/quarkus/ts/http/graphql/OpenShiftGraphQLIT.java @@ -0,0 +1,8 @@ +package io.quarkus.ts.http.graphql; + +import io.quarkus.test.scenarios.OpenShiftScenario; + +@OpenShiftScenario +public class OpenShiftGraphQLIT extends GraphQLIT { + +} diff --git a/pom.xml b/pom.xml index d1edd94809..a96ef56d4b 100644 --- a/pom.xml +++ b/pom.xml @@ -379,6 +379,7 @@ http/servlet-undertow http/vertx-web-client http/hibernate-validator + http/graphql