Adding ExecutionDepositComponentTest.
This commit is contained in:
parent
de54b1c94a
commit
611801e965
4 changed files with 128 additions and 37 deletions
|
|
@ -0,0 +1,92 @@
|
|||
package ru.spcex.clearing.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.account.Account;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.STrade;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static ru.spcex.clearing.utils.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.utils.TestUtils.getJsonStringForUPDATE;
|
||||
|
||||
class ExecutionDepositComponentTest extends AbstractClearingTest {
|
||||
private static final int PARTITION = 0;
|
||||
private static final AtomicInteger currentInteger = new AtomicInteger(1);
|
||||
private static final String TOPIC = Task.getOfTrades.topic();
|
||||
@Autowired
|
||||
EventsReceiver eventsReceiver;
|
||||
@Autowired
|
||||
ExecutionDepositComponent executionDepositComponent;
|
||||
private Instant todayInstant;
|
||||
private Imdg<STrade> sTradeImdg;
|
||||
private Imdg<Security> securityImdg;
|
||||
private Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<Account> accountImdg;
|
||||
private Imdg<Listing> listingImdg;
|
||||
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
super.init();
|
||||
executionDepositComponent.resetTradingDay();
|
||||
this.todayInstant = executionDepositComponent.tradingDay;
|
||||
this.sTradeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_STrade, STrade.class);
|
||||
this.securityImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Security, Security.class);
|
||||
this.executionDepositImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
this.companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.accountImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||
this.listingImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ExecutionDepositComponent#processNewTS()} ()} <br>
|
||||
* Тест проверяет создание сущностей
|
||||
* {@link ExecutionDeposit}
|
||||
* в Hazelcast при передаче из Apache Kafka.<br>
|
||||
*/
|
||||
@Test
|
||||
void processNewTS() {
|
||||
String secCode = "SecCode";
|
||||
String operation = "oper";
|
||||
STrade sTrade = new STrade();
|
||||
Long exchangeExecutionId = 1221L;
|
||||
LocalDate today = LocalDate.now();
|
||||
sTrade.setTradeDateTime(todayInstant);
|
||||
sTrade.setSecCode(secCode);
|
||||
sTrade.setOperation(operation);
|
||||
sTradeImdg.insert(sTrade);
|
||||
|
||||
Security security = new Security();
|
||||
security.setSecuritySymbol(secCode);
|
||||
securityImdg.insert(security);
|
||||
|
||||
ExecutionDeposit executionDeposit = new ExecutionDeposit();
|
||||
executionDeposit.setSide(operation);
|
||||
executionDeposit.setClearingDate(today);
|
||||
executionDeposit.setExchangeExecutionId(exchangeExecutionId);
|
||||
executionDepositImdg.insert(executionDeposit);
|
||||
|
||||
int times = currentInteger.getAndIncrement();
|
||||
|
||||
addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC,
|
||||
PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L));
|
||||
|
||||
//waiting for kafka producer send message (finale event)
|
||||
// verify(mockProducer, timeout(30_000L).times(times))
|
||||
// .send(producerRecord.capture());
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf04;
|
||||
|
|
@ -12,16 +11,14 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request;
|
||||
import ru.spcex.platform.enumeration.TransactionStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static ru.spcex.clearing.utils.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.utils.TestUtils.getJsonStringForUPDATE;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static ru.spcex.clearing.utils.TestUtils.*;
|
||||
|
||||
class PaymentUpdateBySdf04Test extends AbstractClearingTest {
|
||||
private static final int PARTITION = 0;
|
||||
|
|
@ -29,7 +26,7 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest {
|
|||
private static final String TOPIC_SDF04_PROCESS = Consts.SDF04_PROCESS;
|
||||
@Autowired
|
||||
EventsReceiver eventsReceiver;
|
||||
ImdgHazelcast<PaymentInstruction> paymentImdgsMock;
|
||||
private Imdg<PaymentInstruction> paymentImdgsMock;
|
||||
private ArgumentCaptor<PaymentInstruction> settingResult;
|
||||
private Imdg<PaymentInstruction> paymentImdgs;
|
||||
private Imdg<SDf04> sdf04Imdg;
|
||||
|
|
@ -39,10 +36,10 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest {
|
|||
super.init();
|
||||
this.paymentImdgs = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
this.sdf04Imdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class);
|
||||
this.paymentImdgsMock = Mockito.mock(ImdgHazelcast.class, withSettings()
|
||||
.serializable()
|
||||
.spiedInstance(paymentImdgs)
|
||||
.defaultAnswer(CALLS_REAL_METHODS));
|
||||
|
||||
//setting imdg for been PaymentUpdateBySdf04
|
||||
this.paymentImdgsMock = getMockForFildObj(paymentImdgs, paymentUpdateBySdf04, "paymentImdgs");
|
||||
|
||||
this.settingResult = ArgumentCaptor.forClass(PaymentInstruction.class);
|
||||
}
|
||||
|
||||
|
|
@ -53,7 +50,7 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest {
|
|||
* в Hazelcast при передаче из Apache Kafka.<br>
|
||||
*/
|
||||
@Test
|
||||
void updatePayments() throws NoSuchFieldException, IllegalAccessException {
|
||||
void updatePayments() {
|
||||
//ARRANGE
|
||||
Long sdf04GroupId = 12L;
|
||||
Long paymentId = 10L;
|
||||
|
|
@ -68,11 +65,6 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest {
|
|||
payment.setId(paymentId);
|
||||
paymentImdgs.insert(payment);
|
||||
|
||||
//setting imdg for been PaymentUpdateBySdf04
|
||||
Field dbServiceField = PaymentUpdateBySdf04.class.getDeclaredField("paymentImdgs");
|
||||
dbServiceField.setAccessible(true);
|
||||
dbServiceField.set(paymentUpdateBySdf04, paymentImdgsMock);
|
||||
|
||||
//ACT & ASSERT
|
||||
checkTransactionStatus(sdf04GroupId, currentInteger.getAndIncrement(), TransactionStatus.ok.getKey());
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||
|
|
@ -16,16 +15,15 @@ import ru.spcex.platform.enumeration.AccountType;
|
|||
import ru.spcex.platform.enumeration.ResultStatuses;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static ru.spcex.clearing.utils.TestUtils.*;
|
||||
|
||||
class VerificationResultComponentTest extends AbstractClearingTest {
|
||||
|
|
@ -50,20 +48,13 @@ class VerificationResultComponentTest extends AbstractClearingTest {
|
|||
this.accountImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||
this.companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.verificationResultImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_VerificationResult, VerificationResult.class);
|
||||
this.verificationResultImdgMock = Mockito.mock(ImdgHazelcast.class, withSettings()
|
||||
.serializable()
|
||||
.spiedInstance(verificationResultImdg)
|
||||
.defaultAnswer(CALLS_REAL_METHODS));
|
||||
Field dbServiceField = null;
|
||||
try {
|
||||
dbServiceField = VerificationResultComponent.class.getDeclaredField("verificationResultImdg");
|
||||
dbServiceField.setAccessible(true);
|
||||
dbServiceField.set(verificationResultComponent, verificationResultImdgMock);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
clearAllInImdg(sdf01Imdg);
|
||||
clearAllInImdg(accountBalanceImdg);
|
||||
clearAllInImdg(accountImdg);
|
||||
clearAllInImdg(companyImdg);
|
||||
|
||||
//setting imdg for been VerificationResultComponent
|
||||
this.verificationResultImdgMock = getMockForFildObj(verificationResultImdg, verificationResultComponent, "verificationResultImdg");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
|
|||
import org.apache.kafka.clients.producer.RecordMetadata;
|
||||
import org.apache.kafka.common.TopicPartition;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mockito;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
|
|
@ -22,6 +23,7 @@ import ru.spcex.platform.enumeration.ClearingCategory;
|
|||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -32,8 +34,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static ru.spcex.clearing.platform.messaging.service.Status.Success;
|
||||
import static ru.spcex.clearing.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
|
||||
|
|
@ -96,6 +97,21 @@ public class TestUtils {
|
|||
return jsonBaseRequest;
|
||||
}
|
||||
|
||||
public static <T, V> T getMockForFildObj(T from, V obj, String fildName) {
|
||||
T mock = Mockito.mock((Class<T>) from.getClass(), withSettings()
|
||||
.serializable()
|
||||
.spiedInstance(from)
|
||||
.defaultAnswer(CALLS_REAL_METHODS));
|
||||
try {
|
||||
Field dbServiceField = obj.getClass().getDeclaredField(fildName);
|
||||
dbServiceField.setAccessible(true);
|
||||
dbServiceField.set(obj, mock);
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return mock;
|
||||
}
|
||||
|
||||
public static <T extends SpcexObjectBase> void clearAllInImdg(Imdg<T> imdg) {
|
||||
Collection<T> values = imdg.getAllValues();
|
||||
values.forEach(imdg::delete);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue