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.Configuration;
|
||||
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.profile.Contact;
|
||||
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_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, CorporationSoleTypeDictionary.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.imdg.IMDGDistributedNames;
|
||||
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.predicate.ImdgPredicate;
|
||||
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.validation.IValidationRule;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
|
|
@ -22,6 +24,10 @@ public class CompanySymbolNotExistRule implements IValidationRule<ImdgValidation
|
|||
public Optional<EnumMessage> validate(ImdgValidationContext<CompanyNewRequest> context) {
|
||||
CompanyNewRequest request = context.getValidatedObject();
|
||||
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();
|
||||
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
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.junit.jupiter.SpringExtension;
|
||||
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.platform.dictionary.CompanySymbolDictionary;
|
||||
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.validation.CompanyValidationConfig;
|
||||
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.TestUtils;
|
||||
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 javax.annotation.PostConstruct;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
|
|
@ -67,6 +69,7 @@ class CompanyServiceTest {
|
|||
@Qualifier("hazelcastServiceTest")
|
||||
private HazelcastService hazelcastServiceTest;
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg;
|
||||
|
||||
@Captor
|
||||
|
|
@ -78,6 +81,7 @@ class CompanyServiceTest {
|
|||
private void init() {
|
||||
hazelcastServiceTest.waitAvailable();
|
||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
|
||||
workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
||||
WorkflowStatusDictionary ws1 = new WorkflowStatusDictionary();
|
||||
|
|
@ -99,6 +103,11 @@ class CompanyServiceTest {
|
|||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||
cSymbol.setShortname(" CLRC key");
|
||||
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);
|
||||
|
|
@ -178,4 +187,39 @@ class CompanyServiceTest {
|
|||
Assertions.assertEquals("ClrIPO", resultNew.getShortName());
|
||||
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.Consts;
|
||||
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.imdg.api.Imdg;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
@ -52,6 +54,30 @@ public class TestUtils {
|
|||
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) {
|
||||
TopicPartition tp = new TopicPartition(topic, partition);
|
||||
HashMap<TopicPartition, Long> startOffsets = new HashMap<>();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue