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; package de.hmmh.pmt.project;
import de.hmmh.pmt.IntegrationTest; import de.hmmh.pmt.IntegrationTest;
import de.hmmh.pmt.db.Project; import de.hmmh.pmt.db.Project;
import de.hmmh.pmt.dtos.CreateProjectDTO; 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.junit.jupiter.api.Test;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestClientException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Map; import java.util.Map;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; 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.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 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())) when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenReturn(new EmployeeResponseDTO()); .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 this.mvc
.perform(getRequest(createDTO)) .perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isCreated()) .andExpect(status().isCreated())
.andExpect(jsonPath("$.id").exists()); .andExpect(jsonPath("$.id").exists());
} }
@Test @Test
void shouldNotCreateProjectWithSameName() throws Exception { void shouldNotCreateProjectWithSameName() throws Exception {
Map<String, Project> allProjects = createTestProjectData(); Map<String, Project> allProjects = createTestProjectData();
Project spaceStation = allProjects.get("space-station"); Project spaceStation = allProjects.get("space-station");
CreateProjectDTO createDTO = new CreateProjectDTO(); CreateProjectDTO createDTO = getCreateProjectDTO();
createDTO.setName(spaceStation.getName()); 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 this.mvc
.perform(getRequest(createDTO)) .perform(getRequest(createDTO))
@ -64,69 +45,37 @@ public class CreateTest extends IntegrationTest {
@Test @Test
void shouldNotCreateProjectWhenAdministratorDoesNotExist() throws Exception { void shouldNotCreateProjectWhenAdministratorDoesNotExist() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong())) when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND)); .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 this.mvc
.perform(getRequest(createDTO)) .perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isNotFound()); .andExpect(status().isNotFound());
} }
@Test @Test
void shouldReturnUnavailableWhenEmployeeApiIsDown() throws Exception { void shouldReturnUnavailableWhenEmployeeApiIsDown() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong())) when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR)); .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 this.mvc
.perform(getRequest(createDTO)) .perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isServiceUnavailable()); .andExpect(status().isServiceUnavailable());
} }
@Test @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 { void shouldReturnInternalServerErrorOnApiClientCrash() throws Exception {
when(this.mockEmployeeApi.findById(Mockito.anyLong())) when(this.mockEmployeeApi.findById(Mockito.anyLong()))
.thenThrow(new RestClientException("Api Client crash")); .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 this.mvc
.perform(getRequest(createDTO)) .perform(getRequest(getCreateProjectDTO()))
.andExpect(status().isInternalServerError()); .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 @Test
void shouldReturnUnprocessableWhenDataIsInvalid() throws Exception { void shouldReturnUnprocessableWhenDataIsInvalid() throws Exception {
CreateProjectDTO createDTO = getCreateProjectDTO();
CreateProjectDTO createDTO = new CreateProjectDTO();
createDTO.setName("Test");
createDTO.setGoal("A Test Goal");
createDTO.setCustomerId(10L);
createDTO.setAdministratorId(1L);
createDTO.setStart(LocalDateTime.of(2003, 1, 13, 12, 51)); createDTO.setStart(LocalDateTime.of(2003, 1, 13, 12, 51));
createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42)); createDTO.setPlannedEnd(LocalDateTime.of(2002, 3, 21, 11, 42));
@ -135,8 +84,18 @@ public class CreateTest extends IntegrationTest {
.andExpect(status().isUnprocessableEntity()); .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 return MockMvcRequestBuilders
.post(baseUri + "/project") .post(baseUri + "/project")
.accept(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)