Skip to content
Snippets Groups Projects
Commit e913d69a authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

use constructor injection and MockitoBean

parent c2deac56
No related branches found
No related tags found
1 merge request!1Use constructor injection and MockitoBean
......@@ -31,7 +31,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
......@@ -43,6 +43,7 @@ import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
@Component
@RequiredArgsConstructor
class FormSolutionsRequestMapper {
static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() {
};
......@@ -55,10 +56,8 @@ class FormSolutionsRequestMapper {
public static final String FORMDATA_FIELD_POSTKORBHANDLE = "postkorbhandle";
static final String FORMDATA_FIELD_TRANSACTION_ID = "transactionId";
@Autowired
private FormSolutionsAttachmentsMapper attachmentMapper;
@Autowired
private ObjectMapper objectMapper;
private final FormSolutionsAttachmentsMapper attachmentMapper;
private final ObjectMapper objectMapper;
public FormData map(File jsonFile) {
var eingang = mapEingang(jsonFile);
......
......@@ -27,9 +27,10 @@ import java.io.File;
import java.util.UUID;
import java.util.function.Supplier;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.logging.log4j.CloseableThreadContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
......@@ -37,18 +38,16 @@ import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
import de.ozgcloud.common.binaryfile.TempFileUtils;
import de.ozgcloud.eingang.semantik.SemantikAdapter;
import lombok.extern.log4j.Log4j2;
@Endpoint
@Log4j2
@RequiredArgsConstructor
public class SendFormEndpoint {
public static final String JSON_FIELD = "json";
@Autowired
private FormSolutionsRequestMapper requestMapper;
@Autowired
private SemantikAdapter semantikAdapter;
private final FormSolutionsRequestMapper requestMapper;
private final SemantikAdapter semantikAdapter;
private static final String REQUEST_ID_KEY = "requestId";
......
......@@ -24,18 +24,19 @@
package de.ozgcloud.eingang.formsolutions;
import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import lombok.SneakyThrows;
import org.assertj.core.api.ObjectAssert;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
import de.ozgcloud.common.binaryfile.TempFileUtils;
import de.ozgcloud.common.test.TestUtils;
......@@ -43,7 +44,7 @@ import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter;
import lombok.SneakyThrows;
@SpringBootTest
@ActiveProfiles({ "local", "itcase" })
......@@ -52,7 +53,7 @@ class FormSolutionsRequestMapperITCase {
private static final String COMPONENTS = "components";
private static final String PANELS = "panels";
@SpyBean
@MockitoSpyBean
private FormSolutionsRequestMapper mapper;
@Nested
......
......@@ -23,19 +23,15 @@
*/
package de.ozgcloud.eingang.formsolutions;
import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*;
import static de.ozgcloud.eingang.formsolutions.FormSolutionsRequestMapper.*;
import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.io.File;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -47,15 +43,19 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.ozgcloud.common.binaryfile.TempFileUtils;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
import lombok.SneakyThrows;
import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*;
import static de.ozgcloud.eingang.formsolutions.FormSolutionsRequestMapper.*;
import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class FormSolutionsRequestMapperTest {
......@@ -108,7 +108,7 @@ class FormSolutionsRequestMapperTest {
@Test
@SneakyThrows
void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException {
void shouldHandleJsonException() throws JsonProcessingException {
doThrow(JsonProcessingException.class).when(objectMapper).readValue(any(InputStream.class), eq(FormSolutionsEingang.class));
assertThatThrownBy(() -> mapper.mapEingang(simpleJsonFile)).isInstanceOf(TechnicalException.class);
......@@ -134,21 +134,21 @@ class FormSolutionsRequestMapperTest {
void shouldContainPanelIdentifier() {
var eingang = mapper.mapEingang(simpleJsonFile);
assertThat(getPanels(eingang).get(0)).containsEntry(IDENTIFIER_KEY, PANEL_ID);
assertThat(getPanels(eingang).getFirst()).containsEntry(IDENTIFIER_KEY, PANEL_ID);
}
@Test
void shouldContainPanelComponets() {
var eingang = mapper.mapEingang(simpleJsonFile);
assertThat(getPanels(eingang).get(0).get(COMPONENTS)).isNotNull();
assertThat(getPanels(eingang).getFirst().get(COMPONENTS)).isNotNull();
}
@Test
void shouldContainTextComponets() {
var eingang = mapper.mapEingang(simpleJsonFile);
assertThat(getComponents(eingang).get(0))
assertThat(getComponents(eingang).getFirst())
.containsEntry(IDENTIFIER_KEY, COMPONENT_ID)
.containsEntry(STRING_VALUE, COMPONENT_VALUE);
}
......@@ -168,14 +168,14 @@ class FormSolutionsRequestMapperTest {
void shouldContainGroup() {
var eingang = mapper.mapEingang(nestedComponenetJsonFile);
assertThat(getComponents(eingang).get(0)).containsEntry(IDENTIFIER_KEY, OBJEKTGRUPPE_0);
assertThat(getComponents(eingang).getFirst()).containsEntry(IDENTIFIER_KEY, OBJEKTGRUPPE_0);
}
@Test
void shouldContainDateField() {
var eingang = mapper.mapEingang(nestedComponenetJsonFile);
assertThat(getNestedComponents(eingang).get(0))
assertThat(getNestedComponents(eingang).getFirst())
.containsEntry(IDENTIFIER_KEY, DATE_COMPONENT_ID)
.containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE);
}
......@@ -184,12 +184,12 @@ class FormSolutionsRequestMapperTest {
@SuppressWarnings("unchecked")
private List<Map<String, Object>> getComponents(FormSolutionsEingang eingang) {
return (List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS);
return (List<Map<String, Object>>) getPanels(eingang).getFirst().get(COMPONENTS);
}
@SuppressWarnings("unchecked")
private List<Map<String, Object>> getNestedComponents(FormSolutionsEingang eingang) {
return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS)).get(0).get(COMPONENTS);
return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(eingang).getFirst().get(COMPONENTS)).getFirst().get(COMPONENTS);
}
@SuppressWarnings("unchecked")
......
......@@ -38,9 +38,9 @@ import org.mockito.Mock;
import org.mockito.verification.Timeout;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.util.ReflectionTestUtils;
import de.ozgcloud.common.test.TestUtils;
......@@ -59,12 +59,12 @@ import io.grpc.stub.ClientResponseObserver;
@SpringBootTest
@DirtiesContext
@ActiveProfiles({ "local", "itcase" })
public class FormsolutionsITCase {
class FormsolutionsITCase {
@Autowired
private SendFormEndpoint endpoint;
@MockBean
@MockitoBean
private VorgangManagerServerResolver resolver;
@Mock
......@@ -110,9 +110,9 @@ public class FormsolutionsITCase {
void shouldContainZustaendigeStelle() {
new Thread(() -> endpoint.receiveForm(request)).start();
var request = getCreateVorgangRequest();
var vorgangRequest = getCreateVorgangRequest();
assertThat(request.getEingang().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("5678");
assertThat(vorgangRequest.getEingang().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("5678");
}
private GrpcCreateVorgangRequest getCreateVorgangRequest() {
......@@ -151,7 +151,7 @@ public class FormsolutionsITCase {
var requests = getFileRequests();
var contentType = requests.get(0).getMetadata().getContentType();
var contentType = requests.getFirst().getMetadata().getContentType();
assertThat(contentType).isEqualTo("application/pdf");
}
......@@ -161,7 +161,7 @@ public class FormsolutionsITCase {
var requests = getFileRequests();
var size = requests.get(0).getMetadata().getSize();
var size = requests.getFirst().getMetadata().getSize();
assertThat(size).isEqualTo(6788);
}
......
......@@ -23,13 +23,15 @@
*/
package de.ozgcloud.eingang.formsolutions;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.nio.file.Files;
import java.util.Optional;
import lombok.SneakyThrows;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
......@@ -39,33 +41,32 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
import de.ozgcloud.eingang.router.VorgangRemoteService;
import lombok.SneakyThrows;
@ActiveProfiles({ "local", "itcase" })
@SpringBootTest
class SendFormEndpointITCase {
private final static String FILE_BASE_PATH = "classpath:formular/";
private static final String FILE_BASE_PATH = "classpath:formular/";
private final static String FORMULAR_JSON = "RequestJsonContent.json";
private final static String FORMULAR_POSTFACH_ID = "51522620-03d2-4507-b1f0-08d86920efed";
private static final String FORMULAR_JSON = "RequestJsonContent.json";
private static final String FORMULAR_POSTFACH_ID = "51522620-03d2-4507-b1f0-08d86920efed";
@Autowired
private ApplicationContext applicationContext;
@SpyBean
@MockitoSpyBean
private SendFormEndpoint endpoint;
@MockBean
@MockitoBean
private VorgangRemoteService vorgangRemoteService;
@Captor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment