FixedIncomeCashFlow, new request test
This commit is contained in:
parent
e2452d33a7
commit
7a3c1ec22c
4 changed files with 121 additions and 1 deletions
|
|
@ -30,7 +30,7 @@ public class FixedIncomeCashFlowValidationConfig {
|
|||
ImdgValidationContext<FixedIncomeCashFlowNewRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(fixedIncomeCashFlowNewRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_ClearingMemberCategory);
|
||||
addImdg.accept(IMDGDistributedNames.Map_FixedIncomeCashFlow);
|
||||
return new ValidatorImpl<>(context,
|
||||
IsLongValueRule.instance("securitySymbol",
|
||||
FixedIncomeCashFlowNewRequest::getSecuritySymbol,
|
||||
|
|
|
|||
|
|
@ -15,10 +15,12 @@ import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
@Configuration
|
||||
public class ImdgTestConfig {
|
||||
|
||||
public static final AtomicLong currentID = new AtomicLong(0L);
|
||||
private HazelcastInstance hazelcastInstance;
|
||||
|
||||
private static ThreadPoolTaskExecutor createThreadPoolTestTaskExecutor(int maxPoolSz, boolean waitForCompletion) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,113 @@
|
|||
package ru.spcex.clearing.securities.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.MockProducer;
|
||||
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
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.instrument.issue.FixedIncomeCashFlow;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeCashFlowNewRequest;
|
||||
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.config.validation.FixedIncomeCashFlowValidationConfig;
|
||||
import ru.spcex.clearing.securities.service.cud.FixedIncomeCashFlowService;
|
||||
import ru.spcex.clearing.securities.utils.MatcherFactory.Matcher;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static ru.spcex.clearing.securities.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.securities.utils.TestUtils.*;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
ErrorResolverConfig.class,
|
||||
ValidationConfig.class,
|
||||
FixedIncomeCashFlowService.class,
|
||||
FixedIncomeCashFlowValidationConfig.class,
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class FixedIncomeCashFlowServiceTest {
|
||||
public static final Matcher<FixedIncomeCashFlow> FIXED_INCOME_CASH_FLOW_MATCHER = usingIgnoringFieldsComparator();
|
||||
|
||||
private static final String TOPIC_FIXED_INCOME_CASH_FLOW_NEW = Consts.DESTINATION_FIXED_INCOME_CASH_FLOW_NEW;
|
||||
private static final String TOPIC_FIXED_INCOME_CASH_FLOW_UPDATE = Consts.DESTINATION_FIXED_INCOME_CASH_FLOW_UPDATE;
|
||||
private static final Long ID = currentID.incrementAndGet();
|
||||
private static final int PARTITION = 0;
|
||||
|
||||
@Autowired
|
||||
FixedIncomeCashFlowService fixedIncomeCashFlowService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
private Imdg<FixedIncomeCashFlow> fixedIncomeCashFlowImdg;
|
||||
|
||||
@Captor
|
||||
private ArgumentCaptor<ProducerRecord> producerRecord;
|
||||
@SpyBean
|
||||
private MockProducer<String, Object> mockProducer;
|
||||
|
||||
private final String SECURITY_SYMBOL_STR = "777";
|
||||
private final Long SECURITY_SYMBOL_LONG = 777L;
|
||||
|
||||
private final LocalDate TEST_DATE = LocalDate.now();
|
||||
|
||||
private final BigDecimal TEST_BIG_DECIMAL = BigDecimal.TEN;
|
||||
|
||||
private final Long TEST_LONG = Long.MAX_VALUE;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
hazelcastServiceTest.waitAvailable();
|
||||
fixedIncomeCashFlowImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_FixedIncomeCashFlow,
|
||||
FixedIncomeCashFlow.class
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
void fixedIncomeCashFlowNewTest() throws InterruptedException {
|
||||
//ARRANGE
|
||||
FixedIncomeCashFlowNewRequest newRequest = new FixedIncomeCashFlowNewRequest();
|
||||
newRequest.setSecuritySymbol(SECURITY_SYMBOL_STR);
|
||||
newRequest.setNominalValue(TEST_BIG_DECIMAL);
|
||||
newRequest.setAccruedCoupon(TEST_BIG_DECIMAL);
|
||||
newRequest.setNumber(TEST_LONG);
|
||||
newRequest.setValueDate(TEST_DATE);
|
||||
|
||||
FixedIncomeCashFlow predictableFixedIncomeCashFlow = new FixedIncomeCashFlow();
|
||||
predictableFixedIncomeCashFlow.setSecurityId(SECURITY_SYMBOL_LONG);
|
||||
predictableFixedIncomeCashFlow.setNominalValue(TEST_BIG_DECIMAL);
|
||||
predictableFixedIncomeCashFlow.setAccruedCoupon(TEST_BIG_DECIMAL);
|
||||
predictableFixedIncomeCashFlow.setNumber(TEST_LONG);
|
||||
predictableFixedIncomeCashFlow.setValueDate(TEST_DATE);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) fixedIncomeCashFlowService.getConsumer(), TOPIC_FIXED_INCOME_CASH_FLOW_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
||||
FixedIncomeCashFlow resultNew = fixedIncomeCashFlowImdg.getSingleObjectBySQL(String.format("securityId = %s", SECURITY_SYMBOL_STR));
|
||||
predictableFixedIncomeCashFlow.setId(resultNew.getId());
|
||||
FIXED_INCOME_CASH_FLOW_MATCHER.assertMatch(resultNew, predictableFixedIncomeCashFlow);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,7 +2,10 @@ package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -24,6 +27,8 @@ public class FixedIncomeCashFlowNewRequest implements WithSecuritySymbol {
|
|||
public Long number;
|
||||
|
||||
@JsonProperty
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
public LocalDate valueDate;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue