PMT-16: Projekt Anlegen #12

Merged
SZUT-Ole merged 10 commits from story/PMT-16-projekt-anlegen into trunk 2024-10-15 08:15:23 +00:00
Showing only changes of commit 50d889820d - Show all commits

View file

@ -1,5 +1,4 @@
package de.hmmh.pmt.project;
import de.hmmh.pmt.IntegrationTest;
import de.hmmh.pmt.db.Project;
import de.hmmh.pmt.dtos.CreateProjectDTO;
@ -7,17 +6,13 @@ import de.hmmh.pmt.employee.dtos.EmployeeResponseDTO;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestClientException;
import java.time.LocalDateTime;
import java.util.Map;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ -29,33 +24,19 @@ public class CreateTest extends IntegrationTest {
when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenReturn(new EmployeeResponseDTO());
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(10L);
createDTO.setStart(LocalDateTime.of(2000, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
this.mvc
.perform(getRequest(createDTO))
.perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id").exists());
}
@Test
void shouldNotCreateProjectWithSameName() throws Exception {
Map<String, Project> allProjects = createTestProjectData();
Project spaceStation = allProjects.get("space-station");
CreateProjectDTO createDTO = new CreateProjectDTO();
CreateProjectDTO createDTO = getCreateProjectDTO();
createDTO.setName(spaceStation.getName());
createDTO.setGoal(spaceStation.getGoal());
createDTO.setCustomerId(spaceStation.getCustomerId());
createDTO.setAdministratorId(spaceStation.getAdministratorId());
createDTO.setStart(spaceStation.getStart());
createDTO.setPlannedEnd(spaceStation.getPlannedEnd());
this.mvc
.perform(getRequest(createDTO))
@ -64,69 +45,37 @@ public class CreateTest extends IntegrationTest {
@Test
void shouldNotCreateProjectWhenAdministratorDoesNotExist() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND));
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(1L);
createDTO.setStart(LocalDateTime.of(2000, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
this.mvc
.perform(getRequest(createDTO))
.perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isNotFound());
}
@Test
void shouldReturnUnavailableWhenEmployeeApiIsDown() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR));
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(1L);
createDTO.setStart(LocalDateTime.of(2000, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
this.mvc
.perform(getRequest(createDTO))
.perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isServiceUnavailable());
}
@Test
SZUT-Ole marked this conversation as resolved Outdated

Useless 2 Posts, nehmt einfach Einen Der Existierenden Datensätze und Versucht Ihn erneut zu schreiben

Useless 2 Posts, nehmt einfach Einen Der Existierenden Datensätze und Versucht Ihn erneut zu schreiben
void shouldReturnInternalServerErrorOnApiClientCrash() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new RestClientException("Api Client crash"));
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(1L);
createDTO.setStart(LocalDateTime.of(2000, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
this.mvc
.perform(getRequest(createDTO))
.perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isInternalServerError());
}
SZUT-Ole marked this conversation as resolved Outdated

Viel zu Komplex, Mein Ergebnis, wenn man die Spring Doc liest:

when(this.mockEmployeeApi.findById(Mockito.anyLong()))
                .thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND));
``
Viel zu Komplex, Mein Ergebnis, wenn man die Spring Doc liest: ```java when(this.mockEmployeeApi.findById(Mockito.anyLong())) .thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)); ``
@Test
void shouldReturnUnprocessableWhenDataIsInvalid() throws Exception {
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(1L);
CreateProjectDTO createDTO = getCreateProjectDTO();
createDTO.setStart(LocalDateTime.of(2003, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
@ -135,8 +84,18 @@ public class CreateTest extends IntegrationTest {
.andExpect(status().isUnprocessableEntity());
}
private RequestBuilder getRequest(CreateProjectDTO createDTO) throws Exception {
private CreateProjectDTO getCreateProjectDTO() {
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
SZUT-Ole marked this conversation as resolved Outdated

Wofür die Zwischen Variable, kann doch einfach Inline gemovt werden.

Wofür die Zwischen Variable, kann doch einfach Inline gemovt werden.
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(10L);
createDTO.setStart(LocalDateTime.of(2000, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
return createDTO;
}
SZUT-Ole marked this conversation as resolved Outdated

Das Ganze Baute Euch den Inhalt einer Request zusammen, Würde es dementsprechend
getRequest() nennen

Das Ganze Baute Euch den Inhalt einer Request zusammen, Würde es dementsprechend `getRequest()` nennen
private RequestBuilder getRequest(CreateProjectDTO createDTO) throws Exception {
return MockMvcRequestBuilders
.post(baseUri + "/project")
.accept(MediaType.APPLICATION_JSON)