Skip to content
Snippets Groups Projects
Commit fec58ce3 authored by OZGCloud's avatar OZGCloud
Browse files

Add TestCreateKommentarByVorgang

parent 9a833160
Branches
Tags
No related merge requests found
#FROM 172.30.35.192:8082/openjdk:11-slim
FROM openjdk:11-slim
#COPY ${JAR_FILE} /opt/goofy.jar
......
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());
}
}
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());
}
}
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);
}
}
{
"order": "%s",
"kommentar": {
"text": "%s"
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment