--- added test for DeleteCompanyController.
This commit is contained in:
parent
9d1fc630a4
commit
4b7d382689
8 changed files with 149 additions and 47 deletions
|
|
@ -116,6 +116,24 @@
|
||||||
<finalName>${project.artifactId}</finalName>
|
<finalName>${project.artifactId}</finalName>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>2.21.0</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.platform</groupId>
|
||||||
|
<artifactId>junit-platform-surefire-provider</artifactId>
|
||||||
|
<version>1.2.0-M1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.2.0-M1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.queue;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.ResultActions;
|
||||||
|
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||||
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
import org.springframework.web.filter.CharacterEncodingFilter;
|
||||||
|
import ru.spcex.clearing.backendapi.config.WebConfig;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.company.DeleteCompanyController;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.config.*;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
|
|
||||||
|
@SpringJUnitWebConfig(classes = {
|
||||||
|
WebConfig.class,
|
||||||
|
IOperator.class,
|
||||||
|
DeleteCompanyController.class,
|
||||||
|
BankAccountControllerConfig.class,
|
||||||
|
KafkaConfig.class,
|
||||||
|
HazelcastServiceTestConfiguration.class,
|
||||||
|
Jackson2HttpConverterConfig.class})
|
||||||
|
public abstract class AbstractControllerTest {
|
||||||
|
protected static final AtomicLong currentId = new AtomicLong();
|
||||||
|
private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
|
||||||
|
|
||||||
|
static {
|
||||||
|
CHARACTER_ENCODING_FILTER.setEncoding("UTF-8");
|
||||||
|
CHARACTER_ENCODING_FILTER.setForceEncoding(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WebApplicationContext webApplicationContext;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
private void postConstruct() {
|
||||||
|
mockMvc = MockMvcBuilders
|
||||||
|
.webAppContextSetup(webApplicationContext)
|
||||||
|
.addFilter(CHARACTER_ENCODING_FILTER)
|
||||||
|
// .apply(springSecurity())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ResultActions perform(MockHttpServletRequestBuilder builder) throws Exception {
|
||||||
|
return mockMvc.perform(builder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,13 @@
|
||||||
package ru.spcex.clearing.backendapi.controller.queue.account;
|
package ru.spcex.clearing.backendapi.controller.queue.account;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.core.NestedExceptionUtils;
|
import org.springframework.core.NestedExceptionUtils;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
|
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
|
||||||
import org.springframework.web.filter.CharacterEncodingFilter;
|
|
||||||
import ru.spcex.clearing.backendapi.config.WebConfig;
|
import ru.spcex.clearing.backendapi.config.WebConfig;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.config.*;
|
import ru.spcex.clearing.backendapi.controller.queue.config.*;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.utils.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction;
|
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction;
|
||||||
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction;
|
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction;
|
||||||
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
|
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
|
||||||
|
|
@ -22,9 +17,6 @@ import ru.spcex.clearing.backendapi.errors.ActionValidationException;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.BankAccountNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.BankAccountNewRequest;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
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.MockMvcResultHandlers.print;
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||||
|
|
@ -38,31 +30,8 @@ import static ru.spcex.clearing.backendapi.controller.queue.utils.JsonUtil.write
|
||||||
KafkaConfig.class,
|
KafkaConfig.class,
|
||||||
HazelcastServiceTestConfiguration.class,
|
HazelcastServiceTestConfiguration.class,
|
||||||
Jackson2HttpConverterConfig.class})
|
Jackson2HttpConverterConfig.class})
|
||||||
class BankAccountControllerTest {
|
class BankAccountControllerTest extends AbstractControllerTest {
|
||||||
|
|
||||||
public static final MatcherFactory.Matcher<CudResponse> CUD_RESPONSE_MATCHER = MatcherFactory.usingIgnoringFieldsComparator(CudResponse.class);
|
|
||||||
private static final String REST_URL = "/securities/bank-accounts/";
|
private static final String REST_URL = "/securities/bank-accounts/";
|
||||||
private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
|
|
||||||
private static final AtomicLong currentId = new AtomicLong();
|
|
||||||
|
|
||||||
static {
|
|
||||||
CHARACTER_ENCODING_FILTER.setEncoding("UTF-8");
|
|
||||||
CHARACTER_ENCODING_FILTER.setForceEncoding(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private MockMvc mockMvc;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WebApplicationContext webApplicationContext;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void postConstruct() {
|
|
||||||
mockMvc = MockMvcBuilders
|
|
||||||
.webAppContextSetup(webApplicationContext)
|
|
||||||
.addFilter(CHARACTER_ENCODING_FILTER)
|
|
||||||
// .apply(springSecurity())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link BankAccountController#add(BankAccountNewAction)}<br>
|
* {@link BankAccountController#add(BankAccountNewAction)}<br>
|
||||||
|
|
@ -97,9 +66,9 @@ class BankAccountControllerTest {
|
||||||
extended.setMessage("success");
|
extended.setMessage("success");
|
||||||
extended.setPayload(new QueueSuccessResponse(ActionType.NEW, currentId.getAndIncrement()));
|
extended.setPayload(new QueueSuccessResponse(ActionType.NEW, currentId.getAndIncrement()));
|
||||||
//ACT
|
//ACT
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post(REST_URL)
|
perform(MockMvcRequestBuilders.post(REST_URL)
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
.content(writeValue(bankAccountNewAction)))
|
.content(writeValue(bankAccountNewAction)))
|
||||||
.andDo(print())//output to the log request and response
|
.andDo(print())//output to the log request and response
|
||||||
// ASSERT
|
// ASSERT
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
|
|
@ -167,9 +136,9 @@ class BankAccountControllerTest {
|
||||||
extended.setMessage("success");
|
extended.setMessage("success");
|
||||||
extended.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement()));
|
extended.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement()));
|
||||||
//ACT
|
//ACT
|
||||||
mockMvc.perform(MockMvcRequestBuilders.put(REST_URL + "0")
|
perform(MockMvcRequestBuilders.put(REST_URL + "0")
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
.content(writeValue(bankAccountNewAction)))
|
.content(writeValue(bankAccountNewAction)))
|
||||||
.andDo(print())//output to the log request and response
|
.andDo(print())//output to the log request and response
|
||||||
// ASSERT
|
// ASSERT
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
|
|
@ -191,8 +160,8 @@ class BankAccountControllerTest {
|
||||||
extended.setMessage("success");
|
extended.setMessage("success");
|
||||||
extended.setPayload(new QueueSuccessResponse(ActionType.DELETE, currentId.getAndIncrement()));
|
extended.setPayload(new QueueSuccessResponse(ActionType.DELETE, currentId.getAndIncrement()));
|
||||||
//ACT
|
//ACT
|
||||||
mockMvc.perform(MockMvcRequestBuilders.delete(REST_URL + "0")
|
perform(MockMvcRequestBuilders.delete(REST_URL + "0")
|
||||||
.contentType(MediaType.APPLICATION_JSON))
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
.andDo(print())//output to the log request and response
|
.andDo(print())//output to the log request and response
|
||||||
// ASSERT
|
// ASSERT
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
|
|
@ -203,7 +172,7 @@ class BankAccountControllerTest {
|
||||||
private void assertThrowsFor(IAction<?> iAction) {
|
private void assertThrowsFor(IAction<?> iAction) {
|
||||||
assertThrows(ActionValidationException.class, () -> {
|
assertThrows(ActionValidationException.class, () -> {
|
||||||
try {
|
try {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
|
perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Throwable rootCause = NestedExceptionUtils.getRootCause(e);
|
Throwable rootCause = NestedExceptionUtils.getRootCause(e);
|
||||||
throw rootCause != null ? rootCause : e;
|
throw rootCause != null ? rootCause : e;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.queue.company;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.response.cud.QueueSuccessResponse;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
|
|
||||||
|
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.queue.utils.JsonUtil.writeValue;
|
||||||
|
|
||||||
|
class DeleteCompanyControllerTest extends AbstractControllerTest {
|
||||||
|
private static final String REST_URL = "/companies/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link DeleteCompanyController#delete(Long)} <br>
|
||||||
|
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
|
||||||
|
* Входной запрос {@link Long}: - 0L<br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void delete() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
CudResponse extended = new CudResponse();
|
||||||
|
extended.setCode(0L);
|
||||||
|
extended.setMessage("success");
|
||||||
|
extended.setPayload(new QueueSuccessResponse(ActionType.DELETE, currentId.getAndIncrement()));
|
||||||
|
//ACT
|
||||||
|
perform(MockMvcRequestBuilders.delete(REST_URL + "0")
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())//output to the log request and response
|
||||||
|
// ASSERT
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(content().json(writeValue(extended)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.spcex.clearing.backendapi.controller.queue.config;
|
package ru.spcex.clearing.backendapi.controller.queue.config;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.account.BankAccountController;
|
import ru.spcex.clearing.backendapi.controller.queue.account.BankAccountController;
|
||||||
|
|
@ -10,9 +11,11 @@ import ru.spcex.clearing.backendapi.service.IOperator;
|
||||||
public class BankAccountControllerConfig {
|
public class BankAccountControllerConfig {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@Qualifier("iOperator")
|
||||||
|
private IOperator operator;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public BankAccountController createBankAccountController(IOperator operator) {
|
public BankAccountController createBankAccountController() {
|
||||||
return new BankAccountController(operator);
|
return new BankAccountController(operator);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.queue.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.company.DeleteCompanyController;
|
||||||
|
import ru.spcex.clearing.backendapi.service.IOperator;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class DeleteCompanyControllerConfig {
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("iOperator")
|
||||||
|
private IOperator operator;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DeleteCompanyController createDeleteCompanyController() {
|
||||||
|
return new DeleteCompanyController(operator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -40,7 +40,7 @@ public class HazelcastServiceTestConfiguration {
|
||||||
joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1")));
|
joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1")));
|
||||||
networkConfig.setJoin(joinConfig);
|
networkConfig.setJoin(joinConfig);
|
||||||
cfg.setNetworkConfig(networkConfig);
|
cfg.setNetworkConfig(networkConfig);
|
||||||
hazelcastInstance = Hazelcast.newHazelcastInstance(cfg);
|
hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(cfg);
|
||||||
HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance);
|
HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance);
|
||||||
return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params);
|
return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,8 @@ public class IOperator {
|
||||||
private HazelcastService hazelcastServiceTest;
|
private HazelcastService hazelcastServiceTest;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Bean
|
@Bean(name = "iOperator")
|
||||||
public OperatorImpl createIOperator(Producer<String, Object> kafka) {
|
public OperatorImpl createIOperator(Producer<String, Object> kafka) {
|
||||||
return new OperatorImpl(kafka, hazelcastServiceTest);
|
return new OperatorImpl(kafka, hazelcastServiceTest);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue