Добавил CurrencyService валидацию и тесты к нему.
This commit is contained in:
parent
894f12591d
commit
15a477e8ce
13 changed files with 398 additions and 237 deletions
|
|
@ -6,8 +6,11 @@ public enum SecuritiesError implements IErrorEnumId {
|
|||
RequiredFieldIsEmpty(1002L),
|
||||
WrongFieldValue(1004L),
|
||||
InstrumentAlreadyExists(1010L),
|
||||
InstrumentNotActive(1012L),
|
||||
InstrumentNotFound(1011L),
|
||||
InstrumentNotActive(1012L),
|
||||
CurrencyAlreadyExists(1015L),
|
||||
CurrencyNotFound(1016L),
|
||||
|
||||
;
|
||||
private final Long id;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
package ru.spcex.clearing.securities.service.cud;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.Currency;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.securities.component.ListingBuilder;
|
||||
import ru.spcex.clearing.securities.validation.ValidationProvider;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
|
||||
@Service
|
||||
public class CurrencyService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<Currency> currencyImdg;
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idGenerator;
|
||||
private final ValidationProvider validation;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final ListingBuilder listingBuilder = new ListingBuilder();
|
||||
|
||||
@Autowired
|
||||
public CurrencyService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
ValidationProvider validation,
|
||||
ValidationHelper validationHelper) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.validation = validation;
|
||||
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||
this.validationHelper = validationHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(CurrencyNewRequest.class)
|
||||
.setFunction(this::newCurrency)
|
||||
.forDestination(Consts.DESTINATION_СURRENCY_NEW, callbacks::put);
|
||||
callback(CurrencyUpdateRequest.class)
|
||||
.setFunction(this::updateCurrency)
|
||||
.forDestination(Consts.DESTINATION_СURRENCY_UPDATE, callbacks::put);
|
||||
imdgProvider.waitAvailable();
|
||||
init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate newCurrency(BaseRequest<CurrencyNewRequest> userRequest) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
CurrencyNewRequest req = userRequest.getRequestPayload();
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.currencyNewValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
log.debug("newCurrency received");
|
||||
Currency currency = new Currency();
|
||||
currency.setId(idGenerator.nextId());
|
||||
currency.setCountryCode(req.getCountryCode());
|
||||
currency.setCurrencyCode(req.getCurrencyCode());
|
||||
currencyImdg.insert(currency);
|
||||
log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), currency.getId());
|
||||
return null; // default success
|
||||
}
|
||||
|
||||
private RequestInfoUpdate updateCurrency(BaseRequest<CurrencyUpdateRequest> userRequest) {
|
||||
CurrencyUpdateRequest req = userRequest.getRequestPayload();
|
||||
log.debug("updateCurrency received id = {}", req.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.currencyUpdateValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
Currency currency = currencyImdg.getSingleObjectByID(req.getId());
|
||||
currency.setCountryCode(req.getCountryCode());
|
||||
currency.setCurrencyCode(req.getCurrencyCode());
|
||||
currencyImdg.update(currency);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -76,7 +76,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
|
|||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.fixedIncomeNewValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
log.debug("EquitySecurityNewRequest received");
|
||||
log.debug("newFixedIncome received");
|
||||
FixedIncomeSecurity fixedIncome = new FixedIncomeSecurity();
|
||||
fixedIncome.setId(idGenerator.nextId());
|
||||
fixedIncome.setSecuritySymbol(req.getSecuritySymbol());
|
||||
|
|
@ -119,7 +119,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
|
|||
|
||||
private RequestInfoUpdate updateFixedIncome(BaseRequest<FixedIncomeSecurityUpdateRequest> userRequest) {
|
||||
FixedIncomeSecurityUpdateRequest req = userRequest.getRequestPayload();
|
||||
log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId());
|
||||
log.debug("updateFixedIncome received id = {}", req.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.fixedIncomeUpdateValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
|
@ -148,7 +148,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
|
|||
fixedIncomeSecurityImdg.update(fixedIncome);
|
||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", fixedIncome.getId()));
|
||||
if (listing == null) {
|
||||
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), fixedIncome.getId());
|
||||
log.error("updateFixedIncome id {} couldn't find listing with securityId {}", req.getId(), fixedIncome.getId());
|
||||
return null;
|
||||
}
|
||||
listing = listingBuilder.byFixedIncomeEquity(fixedIncome, listing);
|
||||
|
|
|
|||
|
|
@ -1,171 +0,0 @@
|
|||
package ru.spcex.clearing.securities.service.cud;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.securities.component.ListingBuilder;
|
||||
import ru.spcex.clearing.securities.validation.ValidationProvider;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class СurrencyService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private final Imdg<Listing> listingImdg;
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idGenerator;
|
||||
private final ValidationProvider validation;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final ListingBuilder listingBuilder = new ListingBuilder();
|
||||
|
||||
@Autowired
|
||||
public СurrencyService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
ValidationProvider validation,
|
||||
ValidationHelper validationHelper) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.validation = validation;
|
||||
this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||
this.validationHelper = validationHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(EquitySecurityNewRequest.class)
|
||||
.setFunction(this::newEquity)
|
||||
.forDestination(Consts.DESTINATION_СURRENCY_NEW, callbacks::put);
|
||||
callback(EquitySecurityUpdateRequest.class)
|
||||
.setFunction(this::updateEquity)
|
||||
.forDestination(Consts.DESTINATION_СURRENCY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::deleteEquity)
|
||||
.forDestination(Consts.DESTINATION_СURRENCY_DELETE, callbacks::put);
|
||||
imdgProvider.waitAvailable();
|
||||
init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate newEquity(BaseRequest<EquitySecurityNewRequest> userRequest) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
EquitySecurityNewRequest req = userRequest.getRequestPayload();
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.equityNewValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
log.debug("EquitySecurityNewRequest received");
|
||||
EquitySecurity equity = new EquitySecurity();
|
||||
equity.setId(idGenerator.nextId());
|
||||
equity.setSecuritySymbol(req.getSecuritySymbol());
|
||||
equity.setShortName(req.getShortName());
|
||||
equity.setFullName(req.getFullName());
|
||||
equity.setIsin(req.getIsin());
|
||||
equity.setShareType(req.getShareType());
|
||||
equity.setLotSize(req.getLotSize());
|
||||
equity.setIssuerId(req.getIssuerId());
|
||||
equity.setShortNameEng(req.getShortNameEng());
|
||||
equity.setFullNameEng(req.getFullNameEng());
|
||||
equity.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Active.getKey());
|
||||
equity.setInstrumentType(req.getInstrumentType());
|
||||
equity.setSecurityId(equity.getId());
|
||||
equity.setCreated(Instant.now());
|
||||
try {
|
||||
transaction.beginTransaction();
|
||||
Imdg<EquitySecurity> equityImdg = transaction.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
//одним скопом выполняем реквест
|
||||
equityImdg.insert(equity);
|
||||
Listing listing = listingBuilder.byNewEquity(equity, req);
|
||||
listingMap.insert(listing);
|
||||
//и сохраняем обновленный
|
||||
// reqInfoMap.insert(reqInfo);
|
||||
transaction.commitTransaction();
|
||||
} catch (Throwable e) {
|
||||
transaction.rollbackTransaction();
|
||||
// RequestInfo.update(reqInfo, Status.Error, ExceptionUtils.getStackTrace(e));
|
||||
// requestInfoImdg.insert(reqInfo);
|
||||
}
|
||||
log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), equity.getId());
|
||||
return null; // default success
|
||||
}
|
||||
|
||||
private RequestInfoUpdate updateEquity(BaseRequest<EquitySecurityUpdateRequest> userRequest) {
|
||||
EquitySecurityUpdateRequest req = userRequest.getRequestPayload();
|
||||
log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.equityUpdateValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
EquitySecurity equity = equitySecurityImdg.getSingleObjectByID(req.getId());
|
||||
Instant updateTime = Instant.now();
|
||||
equity.setUpdated(updateTime);
|
||||
equity.setSecuritySymbol(req.getSecuritySymbol());
|
||||
equity.setShortName(req.getShortName());
|
||||
equity.setFullName(req.getFullName());
|
||||
equity.setIsin(req.getIsin());
|
||||
equity.setShareType(req.getShareType());
|
||||
equity.setLotSize(req.getLotSize());
|
||||
equity.setIssuerId(req.getIssuerId());
|
||||
equity.setShortNameEng(req.getShortNameEng());
|
||||
equity.setFullNameEng(req.getFullNameEng());
|
||||
equity.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Active.getKey());
|
||||
equity.setInstrumentType(req.getInstrumentType());
|
||||
|
||||
equitySecurityImdg.update(equity);
|
||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equity.getId()));
|
||||
if (listing == null) {
|
||||
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), equity.getId());
|
||||
return null;
|
||||
}
|
||||
listing = listingBuilder.byUpdateEquity(equity, listing);
|
||||
listingImdg.update(listing);
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate deleteEquity(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.equityDeleteValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
Instant updateTime = Instant.now();
|
||||
EquitySecurity equity = equitySecurityImdg.getSingleObjectByID(req.getId());
|
||||
equity.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
equity.setUpdated(updateTime);
|
||||
equitySecurityImdg.update(equity);
|
||||
|
||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equity.getId()));
|
||||
if (listing == null) {
|
||||
log.error("CommonDeleteRequest id {} couldn't find listing with securityId {}", req.getId(), equity.getId());
|
||||
return null;
|
||||
}
|
||||
listing.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
listing.setUpdated(updateTime);
|
||||
listingImdg.update(listing);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@ public class ValidationProvider {
|
|||
private final Imdg<SpcexObjectBase> shareTypeDictionaryImdg;
|
||||
private final Imdg<SpcexObjectBase> bondTypeDictionaryImdg;
|
||||
private final Imdg<SpcexObjectBase> companyImdg;
|
||||
private final Imdg<SpcexObjectBase> currencyImdg;
|
||||
|
||||
|
||||
public ValidationProvider(ImdgProvider imdgProvider) {
|
||||
|
|
@ -41,6 +42,7 @@ public class ValidationProvider {
|
|||
this.shareTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ShareTypeDictionary, SpcexObjectBase.class);
|
||||
this.bondTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_BondTypeDictionary, SpcexObjectBase.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, SpcexObjectBase.class);
|
||||
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, SpcexObjectBase.class);
|
||||
}
|
||||
|
||||
public Function<MoneyMarketSecurityNewRequest, IValidator> mmsNewValidator() {
|
||||
|
|
@ -217,4 +219,26 @@ public class ValidationProvider {
|
|||
);
|
||||
};
|
||||
}
|
||||
|
||||
public Function<CurrencyNewRequest, IValidator> currencyNewValidator() {
|
||||
return currencyRequest -> {
|
||||
ImdgValidationContext<CurrencyNewRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(currencyRequest);
|
||||
context.addImdg(IMDGDistributedNames.Map_Currency, currencyImdg);
|
||||
return new ValidatorImpl<>(context,
|
||||
CurrencyNewValidationRule.CurrencyNotExists
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
public Function<CurrencyUpdateRequest, IValidator> currencyUpdateValidator() {
|
||||
return currencyRequest -> {
|
||||
ImdgValidationContext<CurrencyUpdateRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(currencyRequest);
|
||||
context.addImdg(IMDGDistributedNames.Map_Currency, currencyImdg);
|
||||
return new ValidatorImpl<>(context,
|
||||
CurrencyUpdateValidationRule.CurrencyExists
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
package ru.spcex.clearing.securities.validation.rule;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyNewRequest;
|
||||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public enum CurrencyNewValidationRule implements IValidationRule<ImdgValidationContext<CurrencyNewRequest>> {
|
||||
CurrencyNotExists() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<CurrencyNewRequest> context) {
|
||||
CurrencyNewRequest action = context.getValidatedObject();
|
||||
if (!StringUtils.hasText(action.getCurrencyCode())) {
|
||||
return of(SecuritiesError.RequiredFieldIsEmpty, "currencyCode");
|
||||
}
|
||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_Currency, SpcexObjectBase.class);
|
||||
SpcexObjectBase currency = imdgDictionary.getSingleObjectByFieldValues(Map.of(
|
||||
"currencyCode", action.getCurrencyCode()));
|
||||
if (currency != null) {
|
||||
return of(SecuritiesError.CurrencyAlreadyExists, "currencyCode");
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String ruleName() {
|
||||
return "MmsNewValidationRule." + name();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package ru.spcex.clearing.securities.validation.rule;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyUpdateRequest;
|
||||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public enum CurrencyUpdateValidationRule implements IValidationRule<ImdgValidationContext<CurrencyUpdateRequest>> {
|
||||
CurrencyExists() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<CurrencyUpdateRequest> context) {
|
||||
CurrencyUpdateRequest action = context.getValidatedObject();
|
||||
if (!StringUtils.hasText(action.getCurrencyCode())) {
|
||||
return of(SecuritiesError.RequiredFieldIsEmpty, "currencyCode");
|
||||
}
|
||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_Currency, SpcexObjectBase.class);
|
||||
SpcexObjectBase currency = imdgDictionary.getSingleObjectByFieldValues(Map.of(
|
||||
"currencyCode", action.getCurrencyCode()));
|
||||
if (currency == null) {
|
||||
return of(SecuritiesError.CurrencyNotFound, "currencyCode");
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String ruleName() {
|
||||
return "MmsNewValidationRule." + name();
|
||||
}
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Currency;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
||||
import ru.clearing.platform.dictionary.*;
|
||||
|
|
@ -22,6 +23,7 @@ import ru.spcex.clearing.securities.config.ErrorResolverConfig;
|
|||
import ru.spcex.clearing.securities.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.securities.config.KafkaTestConfig;
|
||||
import ru.spcex.clearing.securities.config.ValidationConfig;
|
||||
import ru.spcex.clearing.securities.service.cud.CurrencyService;
|
||||
import ru.spcex.clearing.securities.service.cud.EquitySecurityService;
|
||||
import ru.spcex.clearing.securities.service.cud.FixedIncomeSecurityService;
|
||||
import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService;
|
||||
|
|
@ -42,6 +44,7 @@ import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFie
|
|||
EquitySecurityService.class,
|
||||
FixedIncomeSecurityService.class,
|
||||
MoneyMarketSecurityService.class,
|
||||
CurrencyService.class,
|
||||
ImdgTestConfig.class,
|
||||
KafkaTestConfig.class,
|
||||
ValidationProvider.class,
|
||||
|
|
@ -61,6 +64,7 @@ public abstract class AbstractServiceTest {
|
|||
protected Imdg<ShareTypeDictionary> shareTypeDictionaryImdg;
|
||||
protected Imdg<BondTypeDictionary> bondTypeDictionaryImdg;
|
||||
protected Imdg<Company> companyImdg;
|
||||
protected Imdg<Currency> currencyImdg;
|
||||
|
||||
public static String RATE = "RATE";
|
||||
protected String EQTY = "EQTY";
|
||||
|
|
@ -92,6 +96,7 @@ public abstract class AbstractServiceTest {
|
|||
this.shareTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ShareTypeDictionary, ShareTypeDictionary.class);
|
||||
this.bondTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_BondTypeDictionary, BondTypeDictionary.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
|
||||
|
||||
InstrumentTypeDictionary instrumentTypeDictionary = new InstrumentTypeDictionary();
|
||||
instrumentTypeDictionary.setId(1L);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
package ru.spcex.clearing.securities.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.misc.Currency;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CurrencyUpdateRequest;
|
||||
import ru.spcex.clearing.securities.service.cud.CurrencyService;
|
||||
import ru.spcex.clearing.securities.utils.MatcherFactory;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.securities.utils.TestUtils.*;
|
||||
|
||||
public class CurrencyServiceTest extends AbstractServiceTest {
|
||||
private static final MatcherFactory.Matcher<Currency> CURRENCY_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
||||
private final long ID = currentId.getAndIncrement();
|
||||
private final int PARTITION = 0;
|
||||
private final String countryCode = "countryCode";
|
||||
private final String currencyCode = "currencyCode";
|
||||
@Autowired
|
||||
private CurrencyService currencyService;
|
||||
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
super.init();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CurrencyService#newCurrency(BaseRequest)}<br>
|
||||
* Тест проверяет генерацию сущности {@link Currency} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CurrencyNewRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void testNewCurrency() {
|
||||
clearAllInImdg(currencyImdg);
|
||||
final String TOPIC = Consts.DESTINATION_СURRENCY_NEW;
|
||||
|
||||
final Currency currencyPrediction = new Currency();
|
||||
currencyPrediction.setCountryCode(countryCode);
|
||||
currencyPrediction.setCurrencyCode(currencyCode);
|
||||
final CurrencyNewRequest request = new CurrencyNewRequest();
|
||||
request.setCountryCode(countryCode);
|
||||
request.setCurrencyCode(currencyCode);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(request, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) currencyService.getConsumer(), TOPIC, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
||||
|
||||
Currency result = currencyImdg.getSingleObjectBySQL(String.format("countryCode = %s", currencyPrediction.getCountryCode()));
|
||||
currencyPrediction.setId(result.getId());
|
||||
CURRENCY_MATCHER.assertMatch(result, currencyPrediction);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CurrencyService#updateCurrency(BaseRequest)}
|
||||
* Тест проверяет обновление сущности {@link Currency} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CurrencyUpdateRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateCurrency() {
|
||||
clearAllInImdg(currencyImdg);
|
||||
final String TOPIC = Consts.DESTINATION_СURRENCY_UPDATE;
|
||||
final Currency currencyPrediction = new Currency();
|
||||
currencyPrediction.setId(ID);
|
||||
currencyPrediction.setCountryCode("ExistsCountryCode");
|
||||
currencyPrediction.setCurrencyCode(currencyCode);
|
||||
currencyImdg.insert(currencyPrediction);
|
||||
currencyPrediction.setCountryCode(countryCode);
|
||||
final CurrencyUpdateRequest request = new CurrencyUpdateRequest();
|
||||
request.setId(ID);
|
||||
request.setCountryCode(countryCode);
|
||||
request.setCurrencyCode(currencyCode);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUPDATE(request, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) currencyService.getConsumer(), TOPIC, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
||||
|
||||
Currency result = currencyImdg.getSingleObjectBySQL(String.format("countryCode = %s", currencyPrediction.getCountryCode()));
|
||||
currencyPrediction.setId(result.getId());
|
||||
CURRENCY_MATCHER.assertMatch(result, currencyPrediction);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,16 +5,12 @@ import org.junit.jupiter.api.Test;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest;
|
||||
import ru.spcex.clearing.securities.service.cud.EquitySecurityService;
|
||||
import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService;
|
||||
import ru.spcex.clearing.securities.utils.MatcherFactory;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
|
@ -24,31 +20,25 @@ import java.util.Map;
|
|||
import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.securities.utils.TestUtils.*;
|
||||
|
||||
public class EquitySecurityServiceTest extends AbstractServiceTest{
|
||||
public class EquitySecurityServiceTest extends AbstractServiceTest {
|
||||
private static final MatcherFactory.Matcher<EquitySecurity> EQUITY_SECURITY_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
||||
private final long ID = currentId.getAndIncrement();
|
||||
private final int PARTITION = 0;
|
||||
@Autowired
|
||||
private EquitySecurityService equitySecurityService;
|
||||
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
super.init();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#newMoneyMarket(BaseRequest)}<br>
|
||||
* Тест проверяет генерацию сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link MoneyMarketSecurityNewRequest}:<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#lotSize} - 1.0<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#nominalValue} - 1.0<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#nominalCurrency} - 1L<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#instrumentType} - "sdgaga"<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#fullName} - "estat"<br>
|
||||
* {@link EquitySecurityService#newEquity(BaseRequest)}<br>
|
||||
* Тест проверяет генерацию сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link EquitySecurityNewRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void testNewEquity(){
|
||||
public void testNewEquity() {
|
||||
clearAllInImdg(equitySecurityImdg);
|
||||
final String TOPIC = Consts.DESTINATION_EQUITY_SECURITY_NEW;
|
||||
|
||||
|
|
@ -76,14 +66,9 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#updateMoneyMarket(BaseRequest)}
|
||||
* Тест проверяет обновление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link MoneyMarketSecurityUpdateRequest}:<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#fullName} - sfgsdfg<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#instrumentType} - qwerqwe<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#nominalCurrency} - RUB<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#nominalValue} - 2.0<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)<br>
|
||||
* {@link EquitySecurityService#updateEquity(BaseRequest)}
|
||||
* Тест проверяет обновление сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link EquitySecurityUpdateRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateEquity() {
|
||||
|
|
@ -121,13 +106,13 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#deleteMoneyMarket(BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* {@link EquitySecurityService#deleteEquity(BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
*/
|
||||
@Test
|
||||
public void testDeleteEquity(){
|
||||
public void testDeleteEquity() {
|
||||
clearAllInImdg(equitySecurityImdg);
|
||||
final String TOPIC = Consts.DESTINATION_EQUITY_SECURITY_DELETE;
|
||||
|
||||
|
|
@ -137,7 +122,8 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
|
||||
Listing listingPrediction = new Listing();
|
||||
listingPrediction = listingBuilder.byUpdateEquity(equityPrediction, listingPrediction);
|
||||
listingImdg.insert(listingPrediction);listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
listingImdg.insert(listingPrediction);
|
||||
listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
|
||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
||||
commonDeleteRequest.setId(ID);
|
||||
|
|
@ -161,7 +147,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
||||
}
|
||||
|
||||
private EquitySecurity getEquitySecurity(){
|
||||
private EquitySecurity getEquitySecurity() {
|
||||
EquitySecurity equitySecurity = new EquitySecurity();
|
||||
equitySecurity.setId(ID);
|
||||
equitySecurity.setSecuritySymbol("SecuritySymbol");
|
||||
|
|
@ -178,7 +164,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
return equitySecurity;
|
||||
}
|
||||
|
||||
private EquitySecurityNewRequest getEquitySecurityNewRequest(EquitySecurity equitySecurity){
|
||||
private EquitySecurityNewRequest getEquitySecurityNewRequest(EquitySecurity equitySecurity) {
|
||||
EquitySecurityNewRequest equitySecurityNewRequest = new EquitySecurityNewRequest();
|
||||
equitySecurityNewRequest.setSecuritySymbol(equitySecurity.getSecuritySymbol());
|
||||
equitySecurityNewRequest.setShortName(equitySecurity.getShortName());
|
||||
|
|
@ -194,7 +180,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest{
|
|||
return equitySecurityNewRequest;
|
||||
}
|
||||
|
||||
private EquitySecurityUpdateRequest getEquitySecurityUpdateRequest(EquitySecurity equitySecurity){
|
||||
private EquitySecurityUpdateRequest getEquitySecurityUpdateRequest(EquitySecurity equitySecurity) {
|
||||
EquitySecurityUpdateRequest equitySecurityUpdateRequest = new EquitySecurityUpdateRequest();
|
||||
equitySecurityUpdateRequest.setId(equitySecurity.getId());
|
||||
equitySecurityUpdateRequest.setSecuritySymbol(equitySecurity.getSecuritySymbol());
|
||||
|
|
|
|||
|
|
@ -5,16 +5,12 @@ import org.junit.jupiter.api.Test;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest;
|
||||
import ru.spcex.clearing.securities.service.cud.FixedIncomeSecurityService;
|
||||
import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService;
|
||||
import ru.spcex.clearing.securities.utils.MatcherFactory;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
|
@ -25,31 +21,25 @@ import java.util.Map;
|
|||
import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.securities.utils.TestUtils.*;
|
||||
|
||||
public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
||||
public class FixedIncomeSecurityServiceTest extends AbstractServiceTest {
|
||||
private static final MatcherFactory.Matcher<FixedIncomeSecurity> FIXED_INCOME_SECURITY_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
||||
private final long ID = currentId.getAndIncrement();
|
||||
private final int PARTITION = 0;
|
||||
@Autowired
|
||||
private FixedIncomeSecurityService fixedIncomeSecurityService;
|
||||
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
super.init();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#newMoneyMarket(BaseRequest)}<br>
|
||||
* Тест проверяет генерацию сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link MoneyMarketSecurityNewRequest}:<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#lotSize} - 1.0<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#nominalValue} - 1.0<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#nominalCurrency} - 1L<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#instrumentType} - "sdgaga"<br>
|
||||
* {@link MoneyMarketSecurityNewRequest#fullName} - "estat"<br>
|
||||
* {@link FixedIncomeSecurityService#newFixedIncome(BaseRequest)}<br>
|
||||
* Тест проверяет генерацию сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link FixedIncomeSecurityNewRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void newFixedIncome(){
|
||||
public void newFixedIncome() {
|
||||
clearAllInImdg(fixedIncomeSecurityImdg);
|
||||
final String TOPIC = Consts.DESTINATION_FIXED_INCOME_SECURITY_NEW;
|
||||
|
||||
|
|
@ -77,14 +67,9 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#updateMoneyMarket(BaseRequest)}
|
||||
* Тест проверяет обновление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link MoneyMarketSecurityUpdateRequest}:<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#fullName} - sfgsdfg<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#instrumentType} - qwerqwe<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#nominalCurrency} - RUB<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#nominalValue} - 2.0<br>
|
||||
* {@link MoneyMarketSecurityUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)<br>
|
||||
* {@link FixedIncomeSecurityService#updateFixedIncome(BaseRequest)}
|
||||
* Тест проверяет обновление сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link FixedIncomeSecurityUpdateRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void updateFixedIncome() {
|
||||
|
|
@ -123,13 +108,13 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
}
|
||||
|
||||
/**
|
||||
* {@link MoneyMarketSecurityService#deleteMoneyMarket(BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* {@link FixedIncomeSecurityService#deleteFixedIncome(BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
*/
|
||||
@Test
|
||||
public void deleteFixedIncome(){
|
||||
public void deleteFixedIncome() {
|
||||
clearAllInImdg(moneyMarketSecurityMap);
|
||||
final String TOPIC = Consts.DESTINATION_FIXED_INCOME_SECURITY_DELETE;
|
||||
|
||||
|
|
@ -139,7 +124,8 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
|
||||
Listing listingPrediction = new Listing();
|
||||
listingPrediction = listingBuilder.byFixedIncomeEquity(fixedIncomePrediction, listingPrediction);
|
||||
listingImdg.insert(listingPrediction);listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
listingImdg.insert(listingPrediction);
|
||||
listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
|
||||
|
||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
||||
commonDeleteRequest.setId(ID);
|
||||
|
|
@ -163,7 +149,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
||||
}
|
||||
|
||||
private FixedIncomeSecurity getFixedIncomeSecurity(){
|
||||
private FixedIncomeSecurity getFixedIncomeSecurity() {
|
||||
FixedIncomeSecurity fixedIncome = new FixedIncomeSecurity();
|
||||
fixedIncome.setId(ID);
|
||||
fixedIncome.setSecuritySymbol("SecuritySymbol");
|
||||
|
|
@ -187,7 +173,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
return fixedIncome;
|
||||
}
|
||||
|
||||
private FixedIncomeSecurityNewRequest getFixedIncomeSecurityNewRequest(FixedIncomeSecurity fixedIncomeSecurity){
|
||||
private FixedIncomeSecurityNewRequest getFixedIncomeSecurityNewRequest(FixedIncomeSecurity fixedIncomeSecurity) {
|
||||
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = new FixedIncomeSecurityNewRequest();
|
||||
fixedIncomeSecurityNewRequest.setSecuritySymbol(fixedIncomeSecurity.getSecuritySymbol());
|
||||
fixedIncomeSecurityNewRequest.setShortName(fixedIncomeSecurity.getShortName());
|
||||
|
|
@ -208,7 +194,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest{
|
|||
return fixedIncomeSecurityNewRequest;
|
||||
}
|
||||
|
||||
private FixedIncomeSecurityUpdateRequest getFixedIncomeSecurityUpdateRequest(FixedIncomeSecurity fixedIncomeSecurity){
|
||||
private FixedIncomeSecurityUpdateRequest getFixedIncomeSecurityUpdateRequest(FixedIncomeSecurity fixedIncomeSecurity) {
|
||||
FixedIncomeSecurityUpdateRequest equitySecurityUpdateRequest = new FixedIncomeSecurityUpdateRequest();
|
||||
equitySecurityUpdateRequest.setId(fixedIncomeSecurity.getId());
|
||||
equitySecurityUpdateRequest.setSecuritySymbol(fixedIncomeSecurity.getSecuritySymbol());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class CurrencyNewRequest{
|
||||
@JsonProperty
|
||||
public String countryCode;
|
||||
@JsonProperty
|
||||
public String currencyCode;
|
||||
|
||||
public String getCountryCode() {
|
||||
return countryCode;
|
||||
}
|
||||
|
||||
public void setCountryCode(String countryCode) {
|
||||
this.countryCode = countryCode;
|
||||
}
|
||||
|
||||
public String getCurrencyCode() {
|
||||
return currencyCode;
|
||||
}
|
||||
|
||||
public void setCurrencyCode(String currencyCode) {
|
||||
this.currencyCode = currencyCode;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
||||
|
||||
public class CurrencyUpdateRequest implements WithId {
|
||||
@JsonProperty
|
||||
public Long id;
|
||||
@JsonProperty
|
||||
public String countryCode;
|
||||
@JsonProperty
|
||||
public String currencyCode;
|
||||
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCountryCode() {
|
||||
return countryCode;
|
||||
}
|
||||
|
||||
public void setCountryCode(String countryCode) {
|
||||
this.countryCode = countryCode;
|
||||
}
|
||||
|
||||
public String getCurrencyCode() {
|
||||
return currencyCode;
|
||||
}
|
||||
|
||||
public void setCurrencyCode(String currencyCode) {
|
||||
this.currencyCode = currencyCode;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue