From fec58ce37ee0b6e658c0e2926cdb75e34f3d8e75 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 21 Apr 2021 13:51:01 +0200 Subject: [PATCH] Add TestCreateKommentarByVorgang --- goofy-server/{Dockerfile => Dockerfile.local} | 1 - .../KommentarCommandControllerTest.java | 85 +++++++++++++++++++ .../KommentarCommandTestFactory.java | 32 +++++++ .../goofy/kommentar/KommentarTestFactory.java | 34 ++++++++ .../createCommandWithKommentar.json.tmpl | 6 ++ 5 files changed, 157 insertions(+), 1 deletion(-) rename goofy-server/{Dockerfile => Dockerfile.local} (77%) create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandTestFactory.java create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java create mode 100644 goofy-server/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl diff --git a/goofy-server/Dockerfile b/goofy-server/Dockerfile.local similarity index 77% rename from goofy-server/Dockerfile rename to goofy-server/Dockerfile.local index b9653d2ded..42e2b58dfa 100644 --- a/goofy-server/Dockerfile +++ b/goofy-server/Dockerfile.local @@ -1,4 +1,3 @@ -#FROM 172.30.35.192:8082/openjdk:11-slim FROM openjdk:11-slim #COPY ${JAR_FILE} /opt/goofy.jar diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java new file mode 100644 index 0000000000..73228a0e42 --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java @@ -0,0 +1,85 @@ +package de.itvsh.goofy.kommentar; + +import static de.itvsh.goofy.kommentar.KommentarCommandTestFactory.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import de.itvsh.goofy.kommentar.KommentarCommandController.KommentarCommandByVorgangController; +import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; + +class KommentarCommandControllerTest { + + @Captor + private ArgumentCaptor<KommentarCommand> commandCaptor; + + private MockMvc mockMvc; + + @Nested + class TestCreateWiedervorlageCommandByVorgang { + + @InjectMocks + private KommentarCommandController controller; + @Mock + private KommentarService service; + + private MockMvc mockMvc; + + @BeforeEach + void init() { + mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + when(service.createCreateCommand(anyString(), any())).thenReturn(KommentarCommandTestFactory.create()); + } + + @Test + void shouldReturnCreated() throws Exception { + doRequest().andExpect(status().isCreated()); + } + + @Test + void shouldCallService() throws Exception { + doRequest(); + + verify(service).createCreateCommand(eq(VorgangHeaderTestFactory.ID), notNull()); + } + + @Test + void shouldGiveCommandToService() throws Exception { + doRequest(); + + verify(service).createCreateCommand(eq(VorgangHeaderTestFactory.ID), commandCaptor.capture()); + var command = commandCaptor.getValue(); + + assertThat(command).usingRecursiveComparison() + .ignoringFields("kommentar.id", "kommentar.createdBy", "kommentar.createdByName", "kommentar.createdAt") + .isEqualTo(KommentarCommandTestFactory.createBuilder().id(null).build()); + } + + private ResultActions doRequest() throws Exception { + return mockMvc.perform(post(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG, VorgangHeaderTestFactory.ID) + .content(createValidRequestContent()).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().is2xxSuccessful()); + } + } + + ResultActions doRequest(String content) throws Exception { + return mockMvc.perform(post(KommentarCommandController.KOMMENTAR_COMMANDS, KommentarTestFactory.ID) + .content(content).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().is2xxSuccessful()); + } + +} diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandTestFactory.java new file mode 100644 index 0000000000..bef9b85590 --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandTestFactory.java @@ -0,0 +1,32 @@ +package de.itvsh.goofy.kommentar; + +import de.itvsh.goofy.TestUtils; +import de.itvsh.goofy.common.command.CommandOrder; +import de.itvsh.goofy.common.command.CommandTestFactory; + +public class KommentarCommandTestFactory { + + public static final String ID = CommandTestFactory.ID; + public static final CommandOrder ORDER = CommandOrder.CREATE_KOMMENTAR; + + public static KommentarCommand create() { + return createBuilder().build(); + } + + public static KommentarCommand.KommentarCommandBuilder createBuilder() { + return KommentarCommand.builder() + .id(ID) + .order(ORDER) + .kommentar(KommentarTestFactory.create()); + } + + public static String createValidRequestContent() { + return createRequestContent(create()); + } + + public static String createRequestContent(KommentarCommand command) { + return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithKommentar.json.tmpl", + command.getOrder().name(), + command.getKommentar().getText()); + } +} diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java new file mode 100644 index 0000000000..d4442f570e --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java @@ -0,0 +1,34 @@ +package de.itvsh.goofy.kommentar; + +import java.time.ZonedDateTime; +import java.util.UUID; + +import com.thedeanda.lorem.Lorem; +import com.thedeanda.lorem.LoremIpsum; + +public class KommentarTestFactory { + + private static Lorem lorem = LoremIpsum.getInstance(); + + public static final String ID = UUID.randomUUID().toString(); + + public static final String CREATED_BY = UUID.randomUUID().toString(); + public static final String CREATED_BY_NAME = lorem.getName(); + public static final String CREATED_AT_STR = "2021-01-10T10:30:00Z"; + public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); + + public static final String TEXT = lorem.getWords(15); + + public static Kommentar create() { + return createBuilder().build(); + } + + public static Kommentar.KommentarBuilder createBuilder() { + return Kommentar.builder() + .id(ID) + .text(TEXT) + .createdBy(CREATED_BY) + .createdByName(CREATED_BY_NAME) + .createdAt(CREATED_AT); + } +} diff --git a/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl new file mode 100644 index 0000000000..21793eb228 --- /dev/null +++ b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl @@ -0,0 +1,6 @@ +{ + "order": "%s", + "kommentar": { + "text": "%s" + } +} \ No newline at end of file -- GitLab