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

OZG-6311 OZG-6429 Implemenet CollaborationController

parent 5302ba82
Branches
Tags
No related merge requests found
{
"angular.enable-strict-mode-prompt": false,
"java.debug.settings.onBuildFailureProceed": true
"java.debug.settings.onBuildFailureProceed": true,
"java.compile.nullAnalysis.mode": "automatic"
}
\ No newline at end of file
package de.ozgcloud.alfa.collaboration;
import org.springframework.hateoas.EntityModel;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import de.ozgcloud.alfa.vorgang.Vorgang;
import lombok.RequiredArgsConstructor;
@RestController
......@@ -17,10 +17,10 @@ public class CollaborationController {
private final CollaborationRequestModelAssembler assembler;
private final CollaborationService service;
static final String PATH = "/api/collaborationrequests/"; // NOSONAR
static final String PATH = "/api/collaborationrequests"; // NOSONAR
@GetMapping("/{collaborationRequestId}")
public EntityModel<Vorgang> getVorgangWithEingang(@PathVariable String collaborationRequestId) {
return null;
public ResponseEntity<EntityModel<CollaborationRequest>> getVorgangWithEingang(@PathVariable String collaborationRequestId) {
return ResponseEntity.of(service.getById(collaborationRequestId).map(assembler::toModel));
}
}
package de.ozgcloud.alfa.collaboration;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
class CollaborationRequest {
private String id;
}
package de.ozgcloud.alfa.collaboration;
class CollaborationRequestModelAssembler {
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.RepresentationModelAssembler;
class CollaborationRequestModelAssembler implements RepresentationModelAssembler<CollaborationRequest, EntityModel<CollaborationRequest>> {
@Override
public EntityModel<CollaborationRequest> toModel(CollaborationRequest collaborationRequest) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'toModel'");
}
}
package de.ozgcloud.alfa.collaboration;
import java.util.Optional;
class CollaborationService {
public Optional<CollaborationRequest> getById(String id) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getById'");
}
}
package de.ozgcloud.alfa.collaboration;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.hateoas.EntityModel;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
class CollaborationControllerTest {
@InjectMocks
private CollaborationController controller;
@Mock
private CollaborationService service;
@Mock
private CollaborationRequestModelAssembler assembler;
private MockMvc mockMvc;
@BeforeEach
void initTest() {
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Nested
class TestGetById {
private final CollaborationRequest collaborationRequest = CollaborationRequestTestFactory.create();
@SneakyThrows
@Test
void shouldCallCollaborationRequestService() {
performRequest();
verify(service).getById(CollaborationRequestTestFactory.ID);
}
@SneakyThrows
@Test
void shouldReturnStatusNotFoundIfCollaborationRequestDoesNotExist() {
when(service.getById(CollaborationRequestTestFactory.ID)).thenReturn(Optional.empty());
var response = performRequest();
response.andExpect(status().isNotFound());
}
@Nested
class TestOnExistingorganisationsEinheit {
@BeforeEach
void mock() {
when(service.getById(CollaborationRequestTestFactory.ID)).thenReturn(Optional.of(collaborationRequest));
}
@Test
void shouldCallAssembler() {
performRequest();
verify(assembler).toModel(collaborationRequest);
}
@SneakyThrows
@Test
void shouldReturnStatusOk() {
when(assembler.toModel(collaborationRequest)).thenReturn(EntityModel.of(collaborationRequest));
var response = performRequest();
response.andExpect(status().isOk());
}
@SneakyThrows
@Test
void shouldReturnCollaborationRequestModel() {
var objectMapper = new ObjectMapper();
when(assembler.toModel(collaborationRequest)).thenReturn(EntityModel.of(collaborationRequest));
var response = performRequest();
assertThat(response.andReturn().getResponse().getContentAsString())
.contains(objectMapper.writeValueAsString(collaborationRequest).replaceAll("[\\{\\}]", ""));
}
}
@SneakyThrows
private ResultActions performRequest() {
return mockMvc.perform(get(CollaborationController.PATH + "/" + CollaborationRequestTestFactory.ID));
}
}
}
package de.ozgcloud.alfa.collaboration;
import java.util.UUID;
import de.ozgcloud.alfa.collaboration.CollaborationRequest.CollaborationRequestBuilder;
public class CollaborationRequestTestFactory {
public static final String ID = UUID.randomUUID().toString();
public static CollaborationRequest create() {
return createBuilder()
.build();
}
private static CollaborationRequestBuilder createBuilder() {
return CollaborationRequest.builder()
.id(ID);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment