Перенес тестовые утилиты в новый модуль test-clearing.
This commit is contained in:
parent
cf22ea1074
commit
d7680f6bdf
24 changed files with 194 additions and 106 deletions
|
|
@ -67,6 +67,11 @@
|
|||
<artifactId>spring-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>test-clearing</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyscreamer</groupId>
|
||||
<artifactId>jsonassert</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,15 @@
|
|||
package ru.spcex.clearing.backendapi.controller.config;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import ru.spcex.clearing.imdg.JsonUtil;
|
||||
|
||||
@Configuration
|
||||
public class Jackson2HttpConverterTestConfig {
|
||||
@Bean("customJsonHttpConverter")
|
||||
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
|
||||
return new MappingJackson2HttpMessageConverter(JacksonObjectMapper.getMapper());
|
||||
}
|
||||
|
||||
public static class JacksonObjectMapper extends ObjectMapper {
|
||||
private static final ObjectMapper MAPPER = new JacksonObjectMapper();
|
||||
|
||||
private JacksonObjectMapper() {
|
||||
//настройки Ильи
|
||||
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
|
||||
//модуль для корректной сериализации LocalDateTime в поля JSON - JavaTimeModule модуль библиотеки jackson-datatype-jsr310
|
||||
registerModule(new JavaTimeModule());
|
||||
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||
//запрещаем доступ ко всем полям и методам класса и потом разрешаем доступ только к полям, нужны чтобы не было лишних полей из-за методов как: public ActionType getActionType() у BankAccountNewAction
|
||||
setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
|
||||
setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
|
||||
//не сериализуем null-поля
|
||||
// setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
||||
}
|
||||
|
||||
public static ObjectMapper getMapper() {
|
||||
return MAPPER;
|
||||
}
|
||||
return new MappingJackson2HttpMessageConverter(JsonUtil.JacksonObjectMapper.getMapper());
|
||||
}
|
||||
}
|
||||
|
|
@ -55,11 +55,11 @@ import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
|
|||
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponseTest;
|
||||
import ru.spcex.clearing.backendapi.controller.response.cud.QueueSuccessResponse;
|
||||
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
|
||||
import ru.spcex.clearing.backendapi.controller.utils.MatcherFactory;
|
||||
import ru.spcex.clearing.backendapi.controller.utils.TestUtils;
|
||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||
import ru.spcex.clearing.backendapi.meta.GetResponseFactory;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.imdg.MatcherFactoryImdg;
|
||||
import ru.spcex.clearing.imdg.TestUtils;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
|
|
@ -80,9 +80,9 @@ import static org.mockito.Mockito.*;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.readValue;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.readValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.MatcherFactoryImdg.usingIgnoringFieldsComparator;
|
||||
|
||||
|
||||
@ContextConfiguration(classes = {
|
||||
|
|
@ -156,8 +156,8 @@ import static ru.spcex.clearing.backendapi.controller.utils.MatcherFactory.using
|
|||
@WebMvcTest//(controllers = DeleteCompanyController.class)
|
||||
//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/backend-api/src/main/resources/")
|
||||
public abstract class AbstractControllerTest {
|
||||
protected static final MatcherFactory.Matcher<BaseRequest> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator(BaseRequest.class);
|
||||
protected static final MatcherFactory.Matcher<CudResponse> CUD_RESPONSE_MATCHER = usingIgnoringFieldsComparator(CudResponse.class);
|
||||
protected static final MatcherFactoryImdg.Matcher<BaseRequest> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator(BaseRequest.class);
|
||||
protected static final MatcherFactoryImdg.Matcher<CudResponse> CUD_RESPONSE_MATCHER = usingIgnoringFieldsComparator(CudResponse.class);
|
||||
protected static final AtomicLong currentId = new AtomicLong();
|
||||
private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class BankAccountControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/securities/bank-accounts/";
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class EditClearingMemberCategoryControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/clearing-member-categories/";
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class EditCompanyInfoControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/company-infos/";
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class EditCompanySymbolControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/company-symbols/";
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class EditContactControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/contacts/";
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class RelationControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/relations/";
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class NotificationControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/notifications/";
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class SessionControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/sessions/";
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class PaymentInstructionControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/payment-instructions/";
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.readValue;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.readValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class LauncherControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/launchers/";
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class PlannerAllTodayControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/schedule/planners-all-today/";
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class PlannerControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/schedule/planners/";
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.readValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.readValue;
|
||||
|
||||
class UserControllerTest extends AbstractControllerTest {
|
||||
public static final String REST_URL = "/users/";
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import java.util.Map;
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue;
|
||||
import static ru.spcex.clearing.imdg.JsonUtil.writeValue;
|
||||
|
||||
class StatementControllerTest extends AbstractControllerTest {
|
||||
public static final String REST_URL = "/statements/";
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
package ru.spcex.clearing.backendapi.controller.utils;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectReader;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static ru.spcex.clearing.backendapi.controller.config.Jackson2HttpConverterTestConfig.JacksonObjectMapper.getMapper;
|
||||
|
||||
public class JsonUtil {
|
||||
|
||||
public static <T> List<T> readValues(String json, Class<T> clazz) {
|
||||
ObjectReader reader = getMapper().readerFor(clazz);
|
||||
try {
|
||||
return reader.<T>readValues(json).readAll();
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException("Invalid read array from JSON:\n'" + json + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> T readValue(String json, Class<T> clazz) {
|
||||
try {
|
||||
return getMapper().readValue(json, clazz);
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException("Invalid read from JSON:\n'" + json + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> String writeValue(T obj) {
|
||||
try {
|
||||
return getMapper().writeValueAsString(obj);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new IllegalStateException("Invalid write to JSON:\n'" + obj + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> String writeIgnoreProps(T obj, String... ignoreProps) {
|
||||
Map<String, Object> map = getMapper().convertValue(obj, new TypeReference<>() {
|
||||
});
|
||||
map.keySet().removeAll(Set.of(ignoreProps));
|
||||
return writeValue(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -34,6 +34,7 @@
|
|||
<module>scheduler-service</module>
|
||||
<module>clearing-service</module>
|
||||
<module>registry-service</module>
|
||||
<module>test-clearing</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
|
|
|||
77
clearing-parent/test-clearing/pom.xml
Normal file
77
clearing-parent/test-clearing/pom.xml
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>clearing-parent</artifactId>
|
||||
<version>SPCEX-1.0.0.0</version>
|
||||
</parent>
|
||||
<artifactId>test-clearing</artifactId>
|
||||
<name>Test-clearing</name>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.platform</groupId>
|
||||
<artifactId>platform-imdg-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.platform</groupId>
|
||||
<artifactId>platform-messaging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skyscreamer</groupId>
|
||||
<artifactId>jsonassert</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.reflections</groupId>
|
||||
<artifactId>reflections</artifactId>
|
||||
<version>0.9.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-test-autoconfigure</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<version>3.23.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<version>SPCEX-1.0.0.0</version>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package ru.spcex.clearing.imdg;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectReader;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
public class JsonUtil {
|
||||
|
||||
public static <T> List<T> readValues(String json, Class<T> clazz) {
|
||||
ObjectReader reader = JacksonObjectMapper.getMapper().readerFor(clazz);
|
||||
try {
|
||||
return reader.<T>readValues(json).readAll();
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException("Invalid read array from JSON:\n'" + json + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> T readValue(String json, Class<T> clazz) {
|
||||
try {
|
||||
return JacksonObjectMapper.getMapper().readValue(json, clazz);
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException("Invalid read from JSON:\n'" + json + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> String writeValue(T obj) {
|
||||
try {
|
||||
return JacksonObjectMapper.getMapper().writeValueAsString(obj);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new IllegalStateException("Invalid write to JSON:\n'" + obj + "'", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> String writeIgnoreProps(T obj, String... ignoreProps) {
|
||||
Map<String, Object> map = JacksonObjectMapper.getMapper().convertValue(obj, new TypeReference<>() {
|
||||
});
|
||||
map.keySet().removeAll(Set.of(ignoreProps));
|
||||
return writeValue(map);
|
||||
}
|
||||
|
||||
public static class JacksonObjectMapper extends ObjectMapper {
|
||||
private static final ObjectMapper MAPPER = new JacksonObjectMapper();
|
||||
|
||||
private JacksonObjectMapper() {
|
||||
//настройки Ильи
|
||||
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
|
||||
//модуль для корректной сериализации LocalDateTime в поля JSON - JavaTimeModule модуль библиотеки jackson-datatype-jsr310
|
||||
registerModule(new JavaTimeModule());
|
||||
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||
//запрещаем доступ ко всем полям и методам класса и потом разрешаем доступ только к полям, нужны чтобы не было лишних полей из-за методов как: public ActionType getActionType() у BankAccountNewAction
|
||||
setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
|
||||
setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
|
||||
//не сериализуем null-поля
|
||||
// setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
||||
}
|
||||
|
||||
public static ObjectMapper getMapper() {
|
||||
return MAPPER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.backendapi.controller.utils;
|
||||
package ru.spcex.clearing.imdg;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.springframework.test.web.servlet.ResultMatcher;
|
||||
|
|
@ -8,15 +9,13 @@ import java.io.UnsupportedEncodingException;
|
|||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Factory for creating test matchers.
|
||||
* <p>
|
||||
* Comparing actual and expected objects via AssertJ
|
||||
* Support converting json MvcResult to objects for comparation.
|
||||
*/
|
||||
public class MatcherFactory {
|
||||
public class MatcherFactoryImdg {
|
||||
|
||||
public static <T> Matcher<T> usingAssertions(Class<T> clazz, BiConsumer<T, T> assertion, BiConsumer<Iterable<T>, Iterable<T>> iterableAssertion) {
|
||||
return new Matcher<>(clazz, assertion, iterableAssertion);
|
||||
|
|
@ -24,14 +23,14 @@ public class MatcherFactory {
|
|||
|
||||
public static <T> Matcher<T> usingEqualsComparator(Class<T> clazz) {
|
||||
return usingAssertions(clazz,
|
||||
(a, e) -> assertThat(a).isEqualTo(e),
|
||||
(a, e) -> assertThat(a).isEqualTo(e));
|
||||
(a, e) -> Assertions.assertThat(a).isEqualTo(e),
|
||||
(a, e) -> Assertions.assertThat(a).isEqualTo(e));
|
||||
}
|
||||
|
||||
public static <T> Matcher<T> usingIgnoringFieldsComparator(Class<T> clazz, String... fieldsToIgnore) {
|
||||
return usingAssertions(clazz,
|
||||
(a, e) -> assertThat(a).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(e),
|
||||
(a, e) -> assertThat(a).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(e));
|
||||
(a, e) -> Assertions.assertThat(a).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(e),
|
||||
(a, e) -> Assertions.assertThat(a).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(e));
|
||||
}
|
||||
|
||||
public static class Matcher<T> {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ru.spcex.clearing.backendapi.controller.utils;
|
||||
package ru.spcex.clearing.imdg;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
5
pom.xml
5
pom.xml
|
|
@ -104,6 +104,11 @@
|
|||
<artifactId>security-util</artifactId>
|
||||
<version>${global.project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>test-clearing</artifactId>
|
||||
<version>${global.project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ru.spcex.platform</groupId>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue