diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java index dd5fdd257d50faa7a5a3993fc3474681ebbdb6d0..f86a7997e0bca64d47a2922b9adee160b0af34c4 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java @@ -1,7 +1,10 @@ package de.itvsh.goofy.kommentar; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableMap; import graphql.schema.DataFetcher; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Arrays; @@ -11,6 +14,9 @@ import java.util.Map; @Component public class GraphQLDataFetchers { + @Autowired + private KommentarService kommentarService; + private static List<Map<String, String>> books = Arrays.asList( ImmutableMap.of("id", "book-1", "name", "Harry Potter and the Philosopher's Stone", @@ -66,4 +72,17 @@ public class GraphQLDataFetchers { return "Hello World"; }; } + + public DataFetcher getKommentarDataFetcher() { + return dataFetchingEnvironment -> { + System.out.println("inside fetcher"); + Kommentar kommentar = kommentarService.getById(dataFetchingEnvironment.getArgument("id")); + Map<String, String> kommentarAsMap = Map.of( + "id", kommentar.getId(), + "createdBy", kommentar.getCreatedBy(), + "createdByName", kommentar.getCreatedByName(), + "text", kommentar.getText()); + return kommentarAsMap; + }; + } } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java index 887a1c790e3bf9f886eb91f3c7446753844d3d51..951a2091f08a280f82e161cec6f17d889c8b6921 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java @@ -47,12 +47,14 @@ public class GraphQLProvider { private RuntimeWiring buildWiring() { return RuntimeWiring.newRuntimeWiring() - /*.type(newTypeWiring("Query") + .type(newTypeWiring("Query") .dataFetcher("bookById", graphQLDataFetchers.getBookByIdDataFetcher())) .type(newTypeWiring("Book") - .dataFetcher("author", graphQLDataFetchers.getAuthorDataFetcher()))*/ + .dataFetcher("author", graphQLDataFetchers.getAuthorDataFetcher())) .type(newTypeWiring("Query") .dataFetcher("greeting", graphQLDataFetchers.getGreetingDataFetcher())) + .type(newTypeWiring("Query") + .dataFetcher("kommentar", graphQLDataFetchers.getKommentarDataFetcher())) .build(); } } \ No newline at end of file diff --git a/goofy-server/src/main/resources/schema.graphqls b/goofy-server/src/main/resources/schema.graphqls index 8f3f9ebb0785a7e0320c2817648c451560166540..f2d7a3e3e31593f270f13c60f24775dbe26113fb 100644 --- a/goofy-server/src/main/resources/schema.graphqls +++ b/goofy-server/src/main/resources/schema.graphqls @@ -1,3 +1,25 @@ type Query { + bookById(id: ID): Book greeting: String + kommentar(id: ID): Kommentar +} + +type Book { + id: ID + name: String + pageCount: Int + author: Author +} + +type Author { + id: ID + firstName: String + lastName: String +} + +type Kommentar { + id: ID + createdBy: String + createdByName: String + text: String } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java index 000d82d4797926a848d0445e598241f7148f7d74..f715918f929239e4e5f667f8b979b3a7afdd2c0c 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java @@ -25,6 +25,8 @@ import de.itvsh.goofy.common.command.CommandOrder; import de.itvsh.goofy.kommentar.KommentarCommandController.KommentarCommandByVorgangController; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; +import java.net.URI; + @AutoConfigureMockMvc @SpringBootTest @WithMockUser @@ -51,6 +53,19 @@ class KommentarCommandITCase { verify(remoteService).sendKommentarCommand(eq(KommentarTestFactory.ID), any()); } + @WithMockUser + @Nested + class TestEndpoint { + + @Test + void createCommandWithInvalidText() throws Exception { + ResultActions resultActions = mockMvc.perform(get(new URI("/api/kommentars/636fbb1b-3f77-4aac-8480-fdf0e2d52d9e"))) + .andExpect(status().is2xxSuccessful()); + System.out.println(resultActions.andReturn().getResponse().getStatus()); + } + + } + @WithMockUser @DisplayName("should return validation error") @Nested