utility-service http://jira.mfd.msk:8088/browse/CLS-844 Обработка ValidationSymbols*Request

This commit is contained in:
AKurakin 2025-05-22 17:16:03 +03:00
parent 3dae3cc633
commit 0c22729906
9 changed files with 655 additions and 0 deletions

View file

@ -32,6 +32,14 @@
<groupId>ru.spcex.clearing</groupId>
<artifactId>classes</artifactId>
</dependency>
<dependency>
<groupId>ru.spcex.clearing</groupId>
<artifactId>clearing-validation</artifactId>
</dependency>
<dependency>
<groupId>ru.spcex.clearing</groupId>
<artifactId>security-util</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>

View file

@ -0,0 +1,23 @@
package ru.spcex.clearing.utility.Enum;
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
public enum UtilityError implements IErrorEnumId {
GeneralError(2000L),
UserVerifyDenial(2001L),
RequiredFieldEmpty(2002L),
RecordAlreadyExist(2005L),
RecordNotFound(2006L),
;
private final Long id;
UtilityError(Long id) {
this.id = id;
}
@Override
public Long getId() {
return id;
}
}

View file

@ -0,0 +1,146 @@
package ru.spcex.clearing.utility.config.validation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
import ru.spcex.clearing.utility.Enum.UtilityError;
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.validation.IValidationRule;
import ru.spcex.platform.utils.validation.IValidator;
import ru.spcex.platform.utils.validation.ValidatorImpl;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
@Configuration
public class ValidateSymbolsValidationConfig {
@Bean("validationSymbolsNewRequestRequestValidator")
public Function<ValidationSymbolsNewRequest, IValidator> validateSymbolsNewRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return validationSymbolsNewRequest -> {
ImdgValidationContext<ValidationSymbolsNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(validationSymbolsNewRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
return new ValidatorImpl<>(context,
FieldRequiredRule.instance("code",
ValidationSymbolsNewRequest::getCode,
UtilityError.RequiredFieldEmpty),
FieldRequiredRule.instance("symbols",
ValidationSymbolsNewRequest::getSymbols,
UtilityError.RequiredFieldEmpty),
new newVSDuplicateCheck()
);
};
}
static class newVSDuplicateCheck implements IValidationRule<ImdgValidationContext<ValidationSymbolsNewRequest>> {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<ValidationSymbolsNewRequest> context) {
ValidationSymbolsNewRequest validatedObject = context.getValidatedObject();
Imdg<ValidationSymbols> tcrMap = context.obtainMap(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
if (validatedObject.getCode() == null) {
return empty();
}
ImdgPredicateBuilder pb = tcrMap.predicateBuilder();
ImdgPredicate query = pb.equals("code", validatedObject.getCode());
Collection<ValidationSymbols> existVS = tcrMap.getCollectionObjectsByPredicate(query);
if (existVS.isEmpty()) {
return empty();
} else {
return of(UtilityError.RecordAlreadyExist, validatedObject.getCode());
}
}
}
static class updateVSDuplicateCheck implements IValidationRule<ImdgValidationContext<ValidationSymbolsUpdateRequest>> {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<ValidationSymbolsUpdateRequest> context) {
ValidationSymbolsUpdateRequest validatedObject = context.getValidatedObject();
Imdg<ValidationSymbols> tcrMap = context.obtainMap(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
if (validatedObject.getCode() == null) {
return empty();
}
ImdgPredicateBuilder pb = tcrMap.predicateBuilder();
ImdgPredicate query = pb.and(pb.equals("code", validatedObject.getCode()),
pb.not(pb.equals("id", validatedObject.getId())));
Collection<ValidationSymbols> existVS = tcrMap.getCollectionObjectsByPredicate(query);
if (existVS.isEmpty()) {
return empty();
} else {
return of(UtilityError.RecordAlreadyExist, validatedObject.getCode());
}
}
}
@Bean("validationSymbolsUpdateRequestRequestValidator")
public Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return validationSymbolsUpdateRequest -> {
ImdgValidationContext<ValidationSymbolsUpdateRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(validationSymbolsUpdateRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
return new ValidatorImpl<>(context,
IdPresentRule.instance("id",
ValidationSymbolsUpdateRequest::getId,
IMDGDistributedNames.Map_ValidationSymbols,
ValidationSymbols.class,
UtilityError.RequiredFieldEmpty,
UtilityError.RecordNotFound),
FieldRequiredRule.instance("code",
ValidationSymbolsNewRequest::getCode,
UtilityError.RequiredFieldEmpty),
FieldRequiredRule.instance("symbols",
ValidationSymbolsNewRequest::getSymbols,
UtilityError.RequiredFieldEmpty),
new updateVSDuplicateCheck()
);
};
}
@Bean("validationSymbolsDeleteRequestRequestValidator")
public Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return validateSymbolsDeleteRequest -> {
ImdgValidationContext<CommonIdRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(validateSymbolsDeleteRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols);
return new ValidatorImpl<>(context,
IdPresentRule.instance("id",
CommonIdRequest::getId,
IMDGDistributedNames.Map_ValidationSymbols,
ValidationSymbols.class,
UtilityError.RequiredFieldEmpty,
UtilityError.RecordNotFound)
);
};
}
}

View file

@ -0,0 +1,55 @@
package ru.spcex.clearing.utility.config.validation;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.util.services.IMDGMessageResolver;
import ru.spcex.clearing.utility.Enum.UtilityError;
import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.UserRole;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
@Configuration
public class ValidationConfig {
@Bean("imdgForValidation")
public Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation(ImdgProvider imdgProvider) {
final Map<String, Imdg<? extends SpcexObjectBase>> imdg = new HashMap<>();
BiConsumer<String, Class<? extends SpcexObjectBase>> addImdg = (s, aClass) -> imdg.put(s, imdgProvider.getImdg(s, aClass));
addImdg.accept(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
return imdg;
}
@Bean("validationHelper")
public ValidationHelper validationHelper(IMessageResolver messageResolver) {
return new ValidationHelper(messageResolver);
}
@Bean
public IMessageResolver messageResolver(ImdgProvider imdgProvider) {
return new IMDGMessageResolver(imdgProvider);
}
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public UserRoleVerification userRoleVerification(ImdgProvider imdgProvider, IMessageResolver messageResolver) {
return new UserRoleVerification(imdgProvider, messageResolver, UserRole.Admin, UtilityError.UserVerifyDenial);
}
}

View file

@ -0,0 +1,164 @@
package ru.spcex.clearing.utility.service;
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.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.account.ClientCode;
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
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.account.ClientCodeNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest;
import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
import ru.spcex.platform.utils.collection.Pair;
import ru.spcex.platform.utils.number.BigDecimalUtil;
import ru.spcex.platform.utils.validation.IValidator;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class ValidationSymbolsService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<ValidationSymbols> validationSymbolsImdg;
private final ImdgProvider imdgProvider;
private final KafkaSender kafkaSender;
private final ValidationHelper validationHelper;
private final UserRoleVerification userRoleVerification;
final Function<ValidationSymbolsNewRequest, IValidator> validationSymbolsNewRequestValidator;
final Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator;
final Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator;
@Autowired
public ValidationSymbolsService(ImdgProvider imdgProvider,
UserRoleVerification userRoleVerification,
ValidationHelper validationHelper,
@Qualifier("validationSymbolsNewRequestRequestValidator")
Function<ValidationSymbolsNewRequest, IValidator> validationSymbolsNewRequestValidator,
@Qualifier("validationSymbolsUpdateRequestRequestValidator")
Function<ValidationSymbolsUpdateRequest, IValidator> validationSymbolsUpdateRequestValidator,
@Qualifier("validationSymbolsDeleteRequestRequestValidator")
Function<CommonIdRequest, IValidator> validationSymbolsDeleteRequestValidator,
KafkaSender kafkaSender,
Producer<String, Object> kafkaProducer,
Consumer<String, Object> kafkaQueue) {
super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider;
this.kafkaSender = kafkaSender;
this.validationSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
this.userRoleVerification = userRoleVerification;
this.validationHelper = validationHelper;
this.validationSymbolsNewRequestValidator = validationSymbolsNewRequestValidator;
this.validationSymbolsUpdateRequestValidator = validationSymbolsUpdateRequestValidator;
this.validationSymbolsDeleteRequestValidator = validationSymbolsDeleteRequestValidator;
}
@Override
public void afterPropertiesSet() throws Exception {
callback(ValidationSymbolsNewRequest.class)
.setFunction(this::onValidateSymbolNewRequest)
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_NEW, callbacks::put);
callback(ValidationSymbolsUpdateRequest.class)
.setFunction(this::onValidateSymbolUpdateRequest)
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_UPDATE, callbacks::put);
callback(CommonIdRequest.class)
.setFunction(this::onValidateSymbolDeleteRequest)
.forDestination(Consts.DESTINATION_VALIDATE_SYMBOLS_DELETE, callbacks::put);
init();
}
public RequestInfoUpdate onValidateSymbolNewRequest(BaseRequest<ValidationSymbolsNewRequest> userRequest) {
log.debug("ValidationSymbolsNewRequest received {}", userRequest.getId());
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsNewRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate;
ValidationSymbolsNewRequest req = userRequest.getRequestPayload();
ValidationSymbols vs = new ValidationSymbols();
vs.setId(validationSymbolsImdg.nextIDSequenceFor());
vs.setCode(req.getCode());
vs.setSymbols(req.getSymbols());
vs.setComment(req.getComment());
validationSymbolsImdg.insert(vs);
log.info("New ValidationSymbols.id={} was created.", vs.getId());
return null;
//return requestHelper.success(vs.getId()); // new RequestInfoUpdate(id, Status.Success, null)
}
public RequestInfoUpdate onValidateSymbolUpdateRequest(BaseRequest<ValidationSymbolsUpdateRequest> userRequest) {
log.debug("ValidationSymbolsUpdateRequest received {}", userRequest.getId());
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsUpdateRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate;
ValidationSymbolsUpdateRequest req = userRequest.getRequestPayload();
ValidationSymbols vs = validationSymbolsImdg.getSingleObjectByID(req.getId());
vs.setCode(req.getCode());
vs.setSymbols(req.getSymbols());
vs.setComment(req.getComment());
validationSymbolsImdg.update(vs);
log.info("Update ValidationSymbols.id={} was created.", vs.getId());
return null;
//return requestHelper.success(vs.getId()); // new RequestInfoUpdate(id, Status.Success, null)
}
public RequestInfoUpdate onValidateSymbolDeleteRequest(BaseRequest<CommonIdRequest> userRequest) {
log.debug("ValidationSymbolsDeleteRequest received {}", userRequest.getId());
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validationSymbolsDeleteRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate;
CommonIdRequest req = userRequest.getRequestPayload();
ValidationSymbols vs = validationSymbolsImdg.getSingleObjectByID(req.getId());
validationSymbolsImdg.delete(vs);
log.info("Delete ValidationSymbols.id={} was created.", vs.getId());
return null;
}
}

View file

@ -0,0 +1,170 @@
package ru.spcex.clearing.utility.service;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.producer.Producer;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.misc.ValidationSymbols;
import ru.clearing.classes.statics.data.register.PairSdf;
import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.clearing.classes.statics.data.sdf.SDf02;
import ru.clearing.classes.statics.data.security.DigitalCertificateSecurity;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.ValidationSymbolsUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.PairSdfRequest;
import ru.spcex.clearing.test.MatcherFactory;
import ru.spcex.clearing.test.config.ImdgTestConfig;
import ru.spcex.clearing.test.config.KafkaTestConfig;
import ru.spcex.clearing.utility.config.TestConfig;
import ru.spcex.clearing.utility.config.settings.UtilityServiceSettings;
import ru.spcex.clearing.utility.config.validation.ValidateSymbolsValidationConfig;
import ru.spcex.clearing.utility.config.validation.ValidationConfig;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import javax.annotation.PostConstruct;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.junit.jupiter.api.Assertions.*;
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
import static ru.spcex.clearing.test.TestUtils.*;
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {
// UtilityServiceSettings.class,
TestConfig.class,
ImdgTestConfig.class,
KafkaTestConfig.class,
ValidationConfig.class,
ValidateSymbolsValidationConfig.class,
ValidationSymbolsService.class
})
class ValidationSymbolsServiceTest {
private static final MatcherFactory.Matcher<ValidationSymbols> VS_MATCHER = usingIgnoringFieldsComparator();
// private static final Long inGenerationId = currentID.getAndIncrement();
// private static final Long outGenerationId = currentID.getAndIncrement();
// private static final Long inSdfId = currentID.getAndIncrement();
@Autowired
private ValidationSymbolsService validationSymbolsService;
@Autowired
@Qualifier("hazelcastServiceTest")
protected ImdgProvider imdgProvider;
@Autowired
@Qualifier("mockProducer")
protected Producer<String, Object> mockProducer;
private Imdg<ValidationSymbols> validationSymbolsIMDG;
static {
Path path = Paths.get("src", "main", "resources");
String currentPath = path.toAbsolutePath().toString();
System.setProperty("spring.config.location", currentPath + File.separator);
}
@PostConstruct
public void init(){
waitAvailableImdgProviderAndAddAdminWithDefaultId();
this.validationSymbolsIMDG = imdgProvider.getImdg(IMDGDistributedNames.Map_ValidationSymbols, ValidationSymbols.class);
// SDf02 sDf02 = new SDf02();
// sDf02.setGenerationId(outGenerationId);
// sDf02.setInSDfId(inSdfId);
// sDf02Imdg.insert(sDf02);
}
@Test
void onValidateSymbolNewRequest() {
Long ID = currentID.getAndIncrement();
ValidationSymbolsNewRequest newReq = new ValidationSymbolsNewRequest();
newReq.setCode("Alphabet Az");
newReq.setSymbols("A-z");
newReq.setComment("Testing aZ");
String jsonString = getJsonStringForNew(newReq, ID);
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_NEW, 0, 0, jsonString);
waitingSendAndCheckRecord(ID, mockProducer);
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getFirstObjectBySQL(
String.format("comment = %s", newReq.getComment())
);
ValidationSymbols vsPrediction=new ValidationSymbols();
vsPrediction.setId(newValidateSymbols.getId());
vsPrediction.setCode("Alphabet Az");
vsPrediction.setSymbols("A-z");
vsPrediction.setComment("Testing aZ");
VS_MATCHER.assertMatch(newValidateSymbols, vsPrediction);
}
@Test
void onValidateSymbolUpdateRequest() {
Long ID = currentID.getAndIncrement();
ValidationSymbols vsOld = new ValidationSymbols();
vsOld.setId(ID);
vsOld.setCode("Alphabet Az");
vsOld.setSymbols("A-F");
vsOld.setComment("Testing aZ");
validationSymbolsIMDG.insert(vsOld);
ValidationSymbolsUpdateRequest newReq = new ValidationSymbolsUpdateRequest();
newReq.setId(ID);
newReq.setCode("Alphabet Az");
newReq.setSymbols("A-F");
newReq.setComment("Testing aZ");
String jsonString = getJsonStringForNew(newReq, ID);
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_UPDATE, 0, 0, jsonString);
waitingSendAndCheckRecord(ID, mockProducer);
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getSingleObjectByID(ID);
ValidationSymbols vsPrediction = new ValidationSymbols();
vsPrediction.setId(newValidateSymbols.getId());
vsPrediction.setCode("Alphabet Az");
vsPrediction.setSymbols("A-F");
vsPrediction.setComment("Testing aZ");
VS_MATCHER.assertMatch(newValidateSymbols, vsPrediction);
}
@Test
void onValidateSymbolDeleteRequest() {
Long ID = currentID.getAndIncrement();
ValidationSymbols vsOld = new ValidationSymbols();
vsOld.setId(ID);
vsOld.setCode("Alphabet Az");
vsOld.setSymbols("A-F");
vsOld.setComment("Testing aZ");
validationSymbolsIMDG.insert(vsOld);
CommonIdRequest deleteReq = new CommonIdRequest();
deleteReq.setId(ID);
String jsonString = getJsonStringForNew(deleteReq, ID);
addRecordToKafka((MockConsumer) validationSymbolsService.getConsumer(), Consts.DESTINATION_VALIDATE_SYMBOLS_DELETE, 0, 0, jsonString);
waitingSendAndCheckRecord(ID, mockProducer);
ValidationSymbols newValidateSymbols = validationSymbolsIMDG.getSingleObjectByID(ID);
assertNull(newValidateSymbols);
}
}

View file

@ -134,6 +134,11 @@ public interface Consts {
String DESTINATION_RATES_NEW = "rates-new";
String DESTINATION_RATES_UPDATE = "rates-update";
String DESTINATION_VALIDATE_SYMBOLS_NEW = "validate-symbols-new";
String DESTINATION_VALIDATE_SYMBOLS_UPDATE = "validate-symbols-update";
String DESTINATION_VALIDATE_SYMBOLS_DELETE = "validate-symbols-delete";
String DESTINATION_SDF08_NEW = "s-df-08-new";
String DESTINATION_SDF02_NEW = "s-df-02-new";

View file

@ -0,0 +1,37 @@
package ru.spcex.clearing.platform.messaging.domain.cud.misc;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ValidationSymbolsNewRequest {
@JsonProperty
private String code;
@JsonProperty
private String symbols;
@JsonProperty
private String comment;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getSymbols() {
return symbols;
}
public void setSymbols(String symbols) {
this.symbols = symbols;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}

View file

@ -0,0 +1,47 @@
package ru.spcex.clearing.platform.messaging.domain.cud.misc;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ValidationSymbolsUpdateRequest {
@JsonProperty
private Long id;
@JsonProperty
private String code;
@JsonProperty
private String symbols;
@JsonProperty
private String comment;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getSymbols() {
return symbols;
}
public void setSymbols(String symbols) {
this.symbols = symbols;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}