backend-api http://jira.mfd.msk:8088/browse/CLS-273
This commit is contained in:
parent
43ae4b26d8
commit
a325a7fd2e
10 changed files with 716 additions and 0 deletions
|
|
@ -0,0 +1,97 @@
|
|||
package ru.spcex.clearing.backendapi.controller.queue.registry;
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryNewAction;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryUpdateAction;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
|
||||
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
|
||||
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
|
||||
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
|
||||
import ru.spcex.clearing.backendapi.controller.response.entity.registry.TradingClearingRegistryBackendGetById;
|
||||
import ru.spcex.clearing.backendapi.service.IOperator;
|
||||
import ru.spcex.clearing.backendapi.service.IStateLoader;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/registry/trading-clearing-registry")
|
||||
public class TradingClearingRegistryController extends AbstractQueueController {
|
||||
private final IStateLoader stateLoader;
|
||||
|
||||
@Autowired
|
||||
public TradingClearingRegistryController(IOperator operator, IStateLoader stateLoader) {
|
||||
super(operator);
|
||||
this.stateLoader = stateLoader;
|
||||
}
|
||||
|
||||
@ApiOperation(value = "create TradingClearingRegistry.")
|
||||
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ResponseBody
|
||||
public CudResponse add(
|
||||
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
|
||||
@RequestBody TradingClearingRegistryNewAction bankAccountNewAction) throws ExecutionException, InterruptedException {
|
||||
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, bankAccountNewAction);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "update TradingClearingRegistry.")
|
||||
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ResponseBody
|
||||
public CudResponse update(
|
||||
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
|
||||
@PathVariable("id") Long id,
|
||||
@ApiParam(value = "Новые значения полей объекта.", required = true)
|
||||
@RequestBody TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction) throws ExecutionException, InterruptedException {
|
||||
tradingClearingRegistryUpdateAction.setId(id);
|
||||
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, tradingClearingRegistryUpdateAction);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "delete TradingClearingRegistry.")
|
||||
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
|
||||
@ResponseBody
|
||||
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
|
||||
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
|
||||
CommonDeleteAction deleteAction = new CommonDeleteAction();
|
||||
deleteAction.setId(id);
|
||||
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_DELETE, deleteAction);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "get TradingClearingRegistry by id.")
|
||||
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = TradingClearingRegistryBackendGetById.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public TradingClearingRegistryBackendGetById getById(@ApiParam(value = "Идентификатор объекта", required = true, example = "1234")
|
||||
@PathVariable("id") Long id) {
|
||||
Optional<TradingClearingRegistry> tradingClearingRegistry = stateLoader.getById(id, IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
TradingClearingRegistryBackendGetById response = new TradingClearingRegistryBackendGetById();
|
||||
tradingClearingRegistry.ifPresentOrElse(response::fromEntity, () -> response.setCode(404));
|
||||
return response;
|
||||
}
|
||||
|
||||
@ApiOperation(value = "get all TradingClearingRegistry's.")
|
||||
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
|
||||
@RequestMapping(method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public CommonGetAllResponse getAll() {
|
||||
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
CommonGetAllResponse response = new CommonGetAllResponse();
|
||||
response.fromEntity(all);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
package ru.spcex.clearing.backendapi.controller.request.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TradingClearingRegistryNewAction implements IAction<TradingClearingRegistryNewRequest> {
|
||||
@ApiModelProperty(value = "Наименование компании", example = "1200")
|
||||
@JsonProperty
|
||||
private Long companyId;
|
||||
@ApiModelProperty(value = "Номер денежного счета", example = "1500")
|
||||
@JsonProperty
|
||||
private Long moneyAccountId;
|
||||
@ApiModelProperty(value = "Номер депозитарного счета", example = "1600")
|
||||
@JsonProperty
|
||||
private Long depoAccountId;
|
||||
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
|
||||
@JsonProperty
|
||||
private String status;
|
||||
|
||||
@Override
|
||||
public Collection<EnumMessage> validate() {
|
||||
List<EnumMessage> errors = new ArrayList<>();
|
||||
if (this.companyId == null)
|
||||
errors.add(new EnumMessage(BackEndError.ValidationError, "companyId"));
|
||||
if (this.moneyAccountId == null)
|
||||
errors.add(new EnumMessage(BackEndError.ValidationError, "moneyAccountId"));
|
||||
return errors.isEmpty() ? Collections.emptyList() : errors;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TradingClearingRegistryNewRequest toRequest() {
|
||||
var req = new TradingClearingRegistryNewRequest();
|
||||
req.setCompanyId(this.companyId);
|
||||
req.setMoneyAccountId(this.moneyAccountId);
|
||||
req.setDepoAccountId(this.depoAccountId);
|
||||
req.setStatus(this.status);
|
||||
return req;
|
||||
}
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
@Override
|
||||
public ActionType getActionType() {
|
||||
return ActionType.NEW;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getMoneyAccountId() {
|
||||
return moneyAccountId;
|
||||
}
|
||||
|
||||
public void setMoneyAccountId(Long moneyAccountId) {
|
||||
this.moneyAccountId = moneyAccountId;
|
||||
}
|
||||
|
||||
public Long getDepoAccountId() {
|
||||
return depoAccountId;
|
||||
}
|
||||
|
||||
public void setDepoAccountId(Long depoAccountId) {
|
||||
this.depoAccountId = depoAccountId;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
package ru.spcex.clearing.backendapi.controller.request.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TradingClearingRegistryUpdateAction implements IAction<TradingClearingRegistryUpdateRequest> {
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
@JsonProperty
|
||||
public Long id;
|
||||
|
||||
@JsonProperty
|
||||
private String status;
|
||||
|
||||
@Override
|
||||
public Collection<EnumMessage> validate() {
|
||||
List<EnumMessage> errors = new ArrayList<>();
|
||||
if (this.id == null)
|
||||
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
|
||||
return errors.isEmpty() ? Collections.emptyList() : errors;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TradingClearingRegistryUpdateRequest toRequest() {
|
||||
var req = new TradingClearingRegistryUpdateRequest();
|
||||
req.setId(this.id);
|
||||
req.setStatus(this.status);
|
||||
return req;
|
||||
}
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
@Override
|
||||
public ActionType getActionType() {
|
||||
return ActionType.UPDATE;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package ru.spcex.clearing.backendapi.controller.response.entity.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
|
||||
|
||||
/**
|
||||
* Банковские реквизиты для перечисления денежных средств
|
||||
*
|
||||
* @ApiModel(description = "Ответ в результате отправки операции в топик Kafka.")
|
||||
* @ApiModelProperty(value = "Информация о принятом запросе")
|
||||
**/
|
||||
@ApiModel(description = "Ответ при получении объекта TradingClearingRegistry.")
|
||||
public class TradingClearingRegistryBackendGetById extends BasicSpcexResponse {
|
||||
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Поля объекта")
|
||||
private TradingClearingRegistryBackendGetFields payload;
|
||||
|
||||
public TradingClearingRegistryBackendGetFields getPayload() {
|
||||
return payload;
|
||||
}
|
||||
|
||||
public void setPayload(TradingClearingRegistryBackendGetFields payload) {
|
||||
this.payload = payload;
|
||||
}
|
||||
|
||||
public void fromEntity(TradingClearingRegistry tcr) {
|
||||
var payload = new TradingClearingRegistryBackendGetFields();
|
||||
this.setPayload(payload);
|
||||
payload.setId(tcr.getId());
|
||||
payload.setCompanyId(tcr.getCompanyId());
|
||||
payload.setCode(tcr.getCode());
|
||||
payload.setMoneyAccountId(tcr.getMoneyAccountId());
|
||||
payload.setDepoAaccountId(tcr.getDepoAaccountId());
|
||||
payload.setTradingClearingRegistryType(tcr.getTradingClearingRegistryType());
|
||||
payload.setTradingClearingRegistryLevel(tcr.getTradingClearingRegistryLevel());
|
||||
payload.setTradingClearingRegistryPurpose(tcr.getTradingClearingRegistryPurpose());
|
||||
payload.setStatus(tcr.getStatus());
|
||||
payload.setCreatedAt(tcr.getCreated());
|
||||
payload.setUpdatedAt(tcr.getUpdated());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
package ru.spcex.clearing.backendapi.controller.response.entity.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public class TradingClearingRegistryBackendGetFields {
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Идентификатор", example = "1234")
|
||||
private Long id;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Идентификатор компании", example = "1234")
|
||||
private Long companyId;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "од торгово-клирингового регистра", example = "ABCD")
|
||||
private String code;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Идентификатор денежного счета", example = "")
|
||||
private Long moneyAccountId;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Идентификатор депозитарного счета", example = "")
|
||||
private Long depoAaccountId;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Код торгово-клирингового регистра", example = "")
|
||||
private String tradingClearingRegistryType;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Код торгово-клирингового регистра", example = "")
|
||||
private String tradingClearingRegistryLevel;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Код области применения", example = "")
|
||||
private String tradingClearingRegistryPurpose;
|
||||
@JsonProperty
|
||||
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
|
||||
private String status;
|
||||
|
||||
@JsonProperty("Дата-время создания записи")
|
||||
@JsonSerialize(using = InstantSerializer.class)
|
||||
private Instant createdAt;
|
||||
@JsonProperty("Дата-время изменения записи")
|
||||
@JsonSerialize(using = InstantSerializer.class)
|
||||
private Instant updatedAt;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public Long getMoneyAccountId() {
|
||||
return moneyAccountId;
|
||||
}
|
||||
|
||||
public void setMoneyAccountId(Long moneyAccountId) {
|
||||
this.moneyAccountId = moneyAccountId;
|
||||
}
|
||||
|
||||
public Long getDepoAaccountId() {
|
||||
return depoAaccountId;
|
||||
}
|
||||
|
||||
public void setDepoAaccountId(Long depoAaccountId) {
|
||||
this.depoAaccountId = depoAaccountId;
|
||||
}
|
||||
|
||||
public String getTradingClearingRegistryType() {
|
||||
return tradingClearingRegistryType;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryType(String tradingClearingRegistryType) {
|
||||
this.tradingClearingRegistryType = tradingClearingRegistryType;
|
||||
}
|
||||
|
||||
public String getTradingClearingRegistryLevel() {
|
||||
return tradingClearingRegistryLevel;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryLevel(String tradingClearingRegistryLevel) {
|
||||
this.tradingClearingRegistryLevel = tradingClearingRegistryLevel;
|
||||
}
|
||||
|
||||
public String getTradingClearingRegistryPurpose() {
|
||||
return tradingClearingRegistryPurpose;
|
||||
}
|
||||
|
||||
public void setTradingClearingRegistryPurpose(String tradingClearingRegistryPurpose) {
|
||||
this.tradingClearingRegistryPurpose = tradingClearingRegistryPurpose;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Instant getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(Instant createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Instant getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(Instant updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ import ru.spcex.clearing.backendapi.controller.queue.liabilities.LiabilitiesClai
|
|||
import ru.spcex.clearing.backendapi.controller.queue.misc.*;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.payment.PaymentInstructionController;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.register.*;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.registry.TradingClearingRegistryController;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.scheduler.*;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.securities.*;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.user.UserController;
|
||||
|
|
@ -129,6 +130,8 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi
|
|||
OrderRegisterController.class,
|
||||
ReportRegisterController.class,
|
||||
UncoveredDealRegisterController.class,
|
||||
//registry
|
||||
TradingClearingRegistryController.class,
|
||||
//scheduler
|
||||
ClearingCalendarController.class,
|
||||
LauncherController.class,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,202 @@
|
|||
package ru.spcex.clearing.backendapi.controller.queue.registry;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.NestedExceptionUtils;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryNewAction;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryUpdateAction;
|
||||
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
|
||||
import ru.spcex.clearing.backendapi.controller.response.entity.registry.TradingClearingRegistryBackendGetById;
|
||||
import ru.spcex.clearing.backendapi.controller.response.entity.registry.TradingClearingRegistryBackendGetFields;
|
||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||
import ru.spcex.clearing.backendapi.errors.ActionValidationException;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
||||
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.test.json.JsonUtil.writeValue;
|
||||
|
||||
class TradingClearingRegistryControllerTest extends AbstractControllerTest {
|
||||
private static final String REST_URL = "/registry/trading-clearing-registry/";
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}<br>
|
||||
* Тест проверяет получение сущности {@link TradingClearingRegistryNewAction} по REST API и отправку в Apache Kafka.<br>
|
||||
* Входной запрос {@link TradingClearingRegistryNewRequest}:<br>
|
||||
* {@link TradingClearingRegistryNewRequest#companyId} - 1234567890<br>
|
||||
* {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057<br>
|
||||
* {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030<br>
|
||||
* {@link TradingClearingRegistryNewRequest#status} - ACTV<br>
|
||||
*/
|
||||
@Test
|
||||
void add() throws Exception {
|
||||
//ARRANGE
|
||||
TradingClearingRegistryNewAction tradingClearingRegistryNewAction = getTradingClearingRegistryNewAction(
|
||||
0,
|
||||
1234567890L, 18415056336414057L, 21239757374450030L, "ACTV"
|
||||
);
|
||||
|
||||
//ACT and ASSERT
|
||||
checkAddingByRestApi(REST_URL, tradingClearingRegistryNewAction);
|
||||
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, tradingClearingRegistryNewAction);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}<br>
|
||||
* Тест проверяет работу валидации сущности {@link TradingClearingRegistryNewAction} принятой по REST API для отправку в Apache Kafka.<br>
|
||||
* Входной запрос {@link TradingClearingRegistryNewRequest}:<br>
|
||||
* {@link TradingClearingRegistryNewRequest#companyId} - 1234567890 / null<br>
|
||||
* {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057 / null<br>
|
||||
* {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030<br>
|
||||
* {@link TradingClearingRegistryNewRequest#status} - ACTV<br>
|
||||
*/
|
||||
@Test
|
||||
void addWithException() {
|
||||
assertThrowsForNew(getTradingClearingRegistryNewAction(0, null, 18415056336414057L, 21239757374450030L, "ACTV"));
|
||||
assertThrowsForNew(getTradingClearingRegistryNewAction(0, 1234567890L, null, 21239757374450030L, "ACTV"));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#update(Long, TradingClearingRegistryUpdateAction)}<br>
|
||||
* Тест проверяет получение сущности {@link TradingClearingRegistryUpdateAction} по REST API и отправку в Apache Kafka.<br>
|
||||
* Входной запрос {@link TradingClearingRegistryUpdateAction}:<br>
|
||||
* {@link TradingClearingRegistryUpdateAction#id} - generated<br>
|
||||
* {@link TradingClearingRegistryUpdateAction#code} - ACTV<br>
|
||||
*/
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
//ARRANGE
|
||||
long id = 0;
|
||||
TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction = getTradingClearingRegistryUpdateAction(
|
||||
id, "ACTV"
|
||||
);
|
||||
|
||||
//ACT and ASSERT
|
||||
checkUpdatingByRestApi(REST_URL, tradingClearingRegistryUpdateAction, id);
|
||||
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, tradingClearingRegistryUpdateAction);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#delete(Long)} <br>
|
||||
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
|
||||
* Входной запрос /registry/trading-clearing-registry/{@link Long}: - 0L<br>
|
||||
*/
|
||||
@Test
|
||||
void delete() throws Exception {
|
||||
//ARRANGE
|
||||
long id = currentId.getAndIncrement();
|
||||
CommonDeleteAction deleteAction = new CommonDeleteAction();
|
||||
deleteAction.setId(id);
|
||||
//ACT and ASSERT
|
||||
checkDeletingByRestApi(REST_URL, id);
|
||||
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_DELETE, deleteAction);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#getById(Long)} <br>
|
||||
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_TradingClearingRegistry.<br>
|
||||
* Входной запрос /registry/trading-clearing-registry/{@link Long}: - 0L <br>
|
||||
* Ответ BankAccountBackendGetById <br>
|
||||
*/
|
||||
@Test
|
||||
void getById() throws Exception {
|
||||
//ARRANGE
|
||||
TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry();
|
||||
existTradingClearingRegistry.setCompanyId(365L);
|
||||
existTradingClearingRegistry.setCode("99999");
|
||||
existTradingClearingRegistry.setMoneyAccountId(404L);
|
||||
existTradingClearingRegistry.setDepoAaccountId(512L);
|
||||
existTradingClearingRegistry.setTradingClearingRegistryType("RUB");
|
||||
existTradingClearingRegistry.setTradingClearingRegistryLevel("OOO ROGA I KOPITA");
|
||||
existTradingClearingRegistry.setTradingClearingRegistryPurpose("848484848484");
|
||||
existTradingClearingRegistry.setStatus("ACTV");
|
||||
existTradingClearingRegistry.setId(currentId.get());
|
||||
|
||||
Imdg<TradingClearingRegistry> inDocumentJournalImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
inDocumentJournalImdg.insert(existTradingClearingRegistry);
|
||||
|
||||
TradingClearingRegistryBackendGetById expected = new TradingClearingRegistryBackendGetById();
|
||||
TradingClearingRegistryBackendGetFields payload = new TradingClearingRegistryBackendGetFields();
|
||||
payload.setId(existTradingClearingRegistry.getId());
|
||||
payload.setCompanyId(existTradingClearingRegistry.getCompanyId());
|
||||
payload.setCode(existTradingClearingRegistry.getCode());
|
||||
payload.setMoneyAccountId(existTradingClearingRegistry.getMoneyAccountId());
|
||||
payload.setDepoAaccountId(existTradingClearingRegistry.getDepoAaccountId());
|
||||
payload.setTradingClearingRegistryType(existTradingClearingRegistry.getTradingClearingRegistryType());
|
||||
payload.setTradingClearingRegistryLevel(existTradingClearingRegistry.getTradingClearingRegistryLevel());
|
||||
payload.setTradingClearingRegistryPurpose(existTradingClearingRegistry.getTradingClearingRegistryPurpose());
|
||||
payload.setStatus(existTradingClearingRegistry.getStatus());
|
||||
payload.setCreatedAt(existTradingClearingRegistry.getCreated());
|
||||
payload.setUpdatedAt(existTradingClearingRegistry.getUpdated());
|
||||
expected.setPayload(payload);
|
||||
//ACT
|
||||
perform(MockMvcRequestBuilders.get(REST_URL + existTradingClearingRegistry.getId())
|
||||
.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(expected)));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link TradingClearingRegistryController#getAll()} <br>
|
||||
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
|
||||
* Входной запрос /registry/trading-clearing-registry/ <br>
|
||||
* Ответ CommonGetAllResponse <br>
|
||||
*/
|
||||
@Test
|
||||
void getAll() throws Exception {
|
||||
//ARRANGE
|
||||
TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry();
|
||||
existTradingClearingRegistry.setCompanyId(365L);
|
||||
existTradingClearingRegistry.setCode("99999");
|
||||
existTradingClearingRegistry.setMoneyAccountId(404L);
|
||||
existTradingClearingRegistry.setDepoAaccountId(512L);
|
||||
existTradingClearingRegistry.setTradingClearingRegistryType("RUB");
|
||||
existTradingClearingRegistry.setTradingClearingRegistryLevel("OOO ROGA I KOPITA");
|
||||
existTradingClearingRegistry.setTradingClearingRegistryPurpose("848484848484");
|
||||
existTradingClearingRegistry.setStatus("ACTV");
|
||||
existTradingClearingRegistry.setId(currentId.get());
|
||||
|
||||
//ACT and ASSERT
|
||||
checkGettingAllFromRestApi(IMDGDistributedNames.Map_TradingClearingRegistry, existTradingClearingRegistry, REST_URL);
|
||||
}
|
||||
|
||||
private void assertThrowsForNew(IAction<?> iAction) {
|
||||
assertThrows(ActionValidationException.class, () -> {
|
||||
try {
|
||||
perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
|
||||
} catch (Exception e) {
|
||||
Throwable rootCause = NestedExceptionUtils.getRootCause(e);
|
||||
throw rootCause != null ? rootCause : e;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private TradingClearingRegistryNewAction getTradingClearingRegistryNewAction(long id,
|
||||
Long companyId, Long moneyAccountId, Long depoAccountId, String status
|
||||
) {
|
||||
TradingClearingRegistryNewAction tradingClearingRegistryNewAction = new TradingClearingRegistryNewAction();
|
||||
tradingClearingRegistryNewAction.setCompanyId(companyId);
|
||||
tradingClearingRegistryNewAction.setMoneyAccountId(moneyAccountId);
|
||||
tradingClearingRegistryNewAction.setDepoAccountId(21239757374450030L);
|
||||
tradingClearingRegistryNewAction.setStatus(status);
|
||||
return tradingClearingRegistryNewAction;
|
||||
}
|
||||
|
||||
private TradingClearingRegistryUpdateAction getTradingClearingRegistryUpdateAction(Long id, String status) {
|
||||
TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction = new TradingClearingRegistryUpdateAction();
|
||||
tradingClearingRegistryUpdateAction.setId(id);
|
||||
tradingClearingRegistryUpdateAction.setStatus(status);
|
||||
return tradingClearingRegistryUpdateAction;
|
||||
}
|
||||
}
|
||||
|
|
@ -69,6 +69,10 @@ public interface Consts {
|
|||
String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update";
|
||||
String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete";
|
||||
|
||||
String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new";
|
||||
String DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE = "trading-clearing-registry-update";
|
||||
String DESTINATION_TRADING_CLEARING_REGISTRY_DELETE = "trading-clearing-registry-delete";
|
||||
|
||||
String DESTINATION_SDF08_NEW = "s-df-08-new";
|
||||
String DESTINATION_SDF02_NEW = "s-df-02-new";
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class TradingClearingRegistryNewRequest {
|
||||
@JsonProperty
|
||||
private Long companyId;
|
||||
@JsonProperty
|
||||
private Long moneyAccountId;
|
||||
@JsonProperty
|
||||
private Long depoAccountId;
|
||||
@JsonProperty
|
||||
private String status;
|
||||
|
||||
public Long getCompanyId() {
|
||||
return companyId;
|
||||
}
|
||||
|
||||
public void setCompanyId(Long companyId) {
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getMoneyAccountId() {
|
||||
return moneyAccountId;
|
||||
}
|
||||
|
||||
public void setMoneyAccountId(Long moneyAccountId) {
|
||||
this.moneyAccountId = moneyAccountId;
|
||||
}
|
||||
|
||||
public Long getDepoAccountId() {
|
||||
return depoAccountId;
|
||||
}
|
||||
|
||||
public void setDepoAccountId(Long depoAccountId) {
|
||||
this.depoAccountId = depoAccountId;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class TradingClearingRegistryUpdateRequest {
|
||||
@JsonProperty
|
||||
private Long id;
|
||||
@JsonProperty
|
||||
private String status;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue