CompanyServiceTest, add test for newCompany fail
This commit is contained in:
parent
ade79ed6c6
commit
0cbbe2a05b
4 changed files with 79 additions and 1 deletions
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.company.config.validation;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
import ru.clearing.classes.statics.data.profile.Contact;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
|
|
@ -35,6 +36,7 @@ public class ValidationConfig {
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Contact, Contact.class);
|
addImdg.accept(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||||
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, CorporationSoleTypeDictionary.class);
|
addImdg.accept(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, CorporationSoleTypeDictionary.class);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class);
|
addImdg.accept(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
@ -11,6 +12,7 @@ import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -22,6 +24,10 @@ public class CompanySymbolNotExistRule implements IValidationRule<ImdgValidation
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<CompanyNewRequest> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<CompanyNewRequest> context) {
|
||||||
CompanyNewRequest request = context.getValidatedObject();
|
CompanyNewRequest request = context.getValidatedObject();
|
||||||
String companySymbolCode = request.getCompanySymbol();
|
String companySymbolCode = request.getCompanySymbol();
|
||||||
|
if (!Arrays.asList(CompanySymbol.INN.getKey(),
|
||||||
|
CompanySymbol.CIO.getKey(),
|
||||||
|
CompanySymbol.UUID.getKey()).contains(companySymbolCode)) return Optional.empty();
|
||||||
|
|
||||||
String companySymbolValue = request.getCompanySymbolValue();
|
String companySymbolValue = request.getCompanySymbolValue();
|
||||||
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
ImdgPredicateBuilder pb = companySymbolsImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = companySymbolsImdg.predicateBuilder();
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
||||||
|
|
@ -22,6 +23,7 @@ import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
||||||
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
import ru.spcex.clearing.company.utils.MatcherFactory;
|
import ru.spcex.clearing.company.utils.MatcherFactory;
|
||||||
import ru.spcex.clearing.company.utils.TestUtils;
|
import ru.spcex.clearing.company.utils.TestUtils;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -35,7 +37,7 @@ import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
|
@ -67,6 +69,7 @@ class CompanyServiceTest {
|
||||||
@Qualifier("hazelcastServiceTest")
|
@Qualifier("hazelcastServiceTest")
|
||||||
private HazelcastService hazelcastServiceTest;
|
private HazelcastService hazelcastServiceTest;
|
||||||
private Imdg<Company> companyImdg;
|
private Imdg<Company> companyImdg;
|
||||||
|
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
private Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg;
|
private Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg;
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
|
|
@ -78,6 +81,7 @@ class CompanyServiceTest {
|
||||||
private void init() {
|
private void init() {
|
||||||
hazelcastServiceTest.waitAvailable();
|
hazelcastServiceTest.waitAvailable();
|
||||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
|
||||||
workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
||||||
WorkflowStatusDictionary ws1 = new WorkflowStatusDictionary();
|
WorkflowStatusDictionary ws1 = new WorkflowStatusDictionary();
|
||||||
|
|
@ -99,6 +103,11 @@ class CompanyServiceTest {
|
||||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||||
cSymbol.setShortname(" CLRC key");
|
cSymbol.setShortname(" CLRC key");
|
||||||
companySymbolDictionaryImdg.insert(cSymbol);
|
companySymbolDictionaryImdg.insert(cSymbol);
|
||||||
|
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
||||||
|
cioSymbol.setId(22L);
|
||||||
|
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
||||||
|
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||||
|
companySymbolDictionaryImdg.insert(cioSymbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
||||||
|
|
@ -178,4 +187,39 @@ class CompanyServiceTest {
|
||||||
Assertions.assertEquals("ClrIPO", resultNew.getShortName());
|
Assertions.assertEquals("ClrIPO", resultNew.getShortName());
|
||||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void newExistCompanySymbolCompanyRequest() {
|
||||||
|
final Long ID = 102L;
|
||||||
|
final String DESTINATION_COMPANY_NEW = Consts.DESTINATION_COMPANY_NEW;
|
||||||
|
companyImdg.size();
|
||||||
|
|
||||||
|
CompanySymbols existCompanySymbols = new CompanySymbols();
|
||||||
|
existCompanySymbols.setCompanyId(ID);
|
||||||
|
existCompanySymbols.setCompanySymbol(CompanySymbol.CIO.getKey());
|
||||||
|
existCompanySymbols.setCompanySymbolValue("test_value");
|
||||||
|
companySymbolsImdg.insert(existCompanySymbols);
|
||||||
|
|
||||||
|
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
|
||||||
|
// companyNewRequest.setId(ID);
|
||||||
|
companyNewRequest.setCompanySymbol(CompanySymbol.CIO.getKey());
|
||||||
|
companyNewRequest.setCompanySymbolValue("test_value");
|
||||||
|
companyNewRequest.setShortName("ClrIPO");
|
||||||
|
companyNewRequest.setFullName("Clearing IPO");
|
||||||
|
companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
|
||||||
|
//ACT
|
||||||
|
String jsonString = getJsonStringForNew(companyNewRequest, ID);
|
||||||
|
addRecordToKafka((MockConsumer) companyService.getConsumer(), DESTINATION_COMPANY_NEW, PARTITION, 0, jsonString);
|
||||||
|
|
||||||
|
//ASSERT
|
||||||
|
waitingWhenTryAddRecordAndCheckError(ID,
|
||||||
|
mockProducer,
|
||||||
|
producerRecord,
|
||||||
|
String.valueOf(CompanyErrors.CompanyWithCompanySymbolAlreadyExist.getId()),
|
||||||
|
Arrays.asList("CIO", "test_value"));
|
||||||
|
|
||||||
|
Company resultNew = companyImdg.getSingleObjectByFieldValues(Map.of("ShortName", "ClrIPO"));
|
||||||
|
Assertions.assertNull(resultNew);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -13,12 +13,14 @@ import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
@ -52,6 +54,30 @@ public class TestUtils {
|
||||||
BASE_REQUEST_MATCHER.assertMatch(baseRequestResult, predictableBaseRequest);
|
BASE_REQUEST_MATCHER.assertMatch(baseRequestResult, predictableBaseRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void waitingWhenTryAddRecordAndCheckError(Long id,
|
||||||
|
MockProducer mockProducer,
|
||||||
|
ArgumentCaptor<ProducerRecord> producerRecord,
|
||||||
|
String errorCode,
|
||||||
|
List<String> errorMessageArgs) {
|
||||||
|
BaseRequest<Object> predictableBaseRequest = new BaseRequest<>();
|
||||||
|
predictableBaseRequest.setId(id);
|
||||||
|
predictableBaseRequest.setActionType(ActionType.SYSTEM);
|
||||||
|
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
|
||||||
|
requestInfoUpdate.setId(id);
|
||||||
|
requestInfoUpdate.setStatus(Status.Error);
|
||||||
|
String errorsMessage = "(%s) args [%s]".formatted(errorCode, String.join(", ", errorMessageArgs));
|
||||||
|
requestInfoUpdate.setMessage(errorsMessage);
|
||||||
|
predictableBaseRequest.setRequestPayload(requestInfoUpdate);
|
||||||
|
|
||||||
|
//waiting for kafka producer send message (finale event)
|
||||||
|
verify(mockProducer, timeout(30_000L).times(1))
|
||||||
|
.send(producerRecord.capture());
|
||||||
|
|
||||||
|
BaseRequest<Object> baseRequestResult = (BaseRequest<Object>) producerRecord.getValue().value();
|
||||||
|
assertEquals(Consts.REQUEST_INFO_UPDATE, producerRecord.getValue().topic());
|
||||||
|
BASE_REQUEST_MATCHER.assertMatch(baseRequestResult, predictableBaseRequest);
|
||||||
|
}
|
||||||
|
|
||||||
public static void addRecordToKafka(MockConsumer mockConsumer, String topic, int partition, long offset, String jsonValue) {
|
public static void addRecordToKafka(MockConsumer mockConsumer, String topic, int partition, long offset, String jsonValue) {
|
||||||
TopicPartition tp = new TopicPartition(topic, partition);
|
TopicPartition tp = new TopicPartition(topic, partition);
|
||||||
HashMap<TopicPartition, Long> startOffsets = new HashMap<>();
|
HashMap<TopicPartition, Long> startOffsets = new HashMap<>();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue