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

Add TestCreateKommentarByVorgang

parent 9a833160
No related branches found
No related tags found
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