This commit is contained in:
AKurakin 2023-04-20 18:48:47 +03:00
parent 43ae4b26d8
commit a325a7fd2e
10 changed files with 716 additions and 0 deletions

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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());
}
}

View file

@ -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;
}
}

View file

@ -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,

View file

@ -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;
}
}

View file

@ -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";

View file

@ -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;
}
}

View file

@ -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;
}
}