From e3454a08fa94e9869785cae59fe28fcff8d53c40 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 27 Jul 2021 12:49:37 +0200
Subject: [PATCH] OZG-409 Make DataFetcher for Kommentar work

---
 .../goofy/kommentar/GraphQLDataFetchers.java  | 19 ++++++++++++++++
 .../goofy/kommentar/GraphQLProvider.java      |  6 +++--
 .../src/main/resources/schema.graphqls        | 22 +++++++++++++++++++
 .../kommentar/KommentarCommandITCase.java     | 15 +++++++++++++
 4 files changed, 60 insertions(+), 2 deletions(-)

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 dd5fdd257d..f86a7997e0 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 887a1c790e..951a2091f0 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 8f3f9ebb07..f2d7a3e3e3 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 000d82d479..f715918f92 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
-- 
GitLab