Adding test VerificationResultComponentTest for clearing-service.

This commit is contained in:
psemenkov 2023-03-17 18:17:38 +03:00
parent 729280e629
commit e24cece994
3 changed files with 115 additions and 1 deletions

View file

@ -52,6 +52,9 @@ public abstract class AbstractClearingTest {
@Autowired
protected PaymentUpdateBySdf04 paymentUpdateBySdf04;
@Autowired
protected VerificationResultComponent verificationResultComponent;
protected void init() {
hazelcastServiceTest.waitAvailable();
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);

View file

@ -27,10 +27,10 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest {
private static final int PARTITION = 0;
private static final AtomicInteger currentInteger = new AtomicInteger(1);
private static final String TOPIC_SDF04_PROCESS = Consts.SDF04_PROCESS;
ArgumentCaptor<PaymentInstruction> settingResult;
@Autowired
EventsReceiver eventsReceiver;
ImdgHazelcast<PaymentInstruction> paymentImdgsMock;
private ArgumentCaptor<PaymentInstruction> settingResult;
private Imdg<PaymentInstruction> paymentImdgs;
private Imdg<SDf04> sdf04Imdg;

View file

@ -0,0 +1,111 @@
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;
import ru.clearing.classes.statics.data.clearing.VerificationResult;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
import ru.spcex.platform.enumeration.AccountType;
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.mockito.Mockito.*;
import static ru.spcex.clearing.utils.TestUtils.addRecordToKafka;
import static ru.spcex.clearing.utils.TestUtils.getJsonStringForUPDATE;
class VerificationResultComponentTest extends AbstractClearingTest {
private static final int PARTITION = 0;
private static final AtomicInteger currentInteger = new AtomicInteger(1);
private static final String TOPIC_VERIFICATION = Task.getVerification.topic();
private final ArgumentCaptor<VerificationResult> settingResult = ArgumentCaptor.forClass(VerificationResult.class);
@Autowired
EventsReceiver eventsReceiver;
private Imdg<SDf01> sdf01Imdg;
private Imdg<AccountBalance> accountBalanceImdg;
private Imdg<Account> accountImdg;
private Imdg<Company> companyImdg;
private Imdg<VerificationResult> verificationResultImdg;
private Imdg<VerificationResult> verificationResultImdgMock;
@PostConstruct
protected void init() {
super.init();
this.sdf01Imdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class);
this.accountBalanceImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
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));
//setting imdg for been VerificationResultComponent
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);
}
}
@Test
void executeRevision() {
//ARRANGE
int times = currentInteger.getAndIncrement();
Long companyId = 10L;
String acc = "15444876546";
String remainder = "15";
BigDecimal closeBalanceAmount = new BigDecimal(remainder);
SDf01 sDf01 = new SDf01();
sDf01.setAccount(acc);
sDf01.setRemainder(remainder);
sDf01.setDeal(acc);
sdf01Imdg.insert(sDf01);
AccountBalance accountBalance = new AccountBalance();
accountBalance.setCompanyId(companyId);
accountBalance.setAccount(acc);
accountBalance.setCloseBalanceAmount(closeBalanceAmount);
accountBalanceImdg.insert(accountBalance);
Account account = new Account();
account.setAccount(acc);
account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus("UNBL");
account.setCompanyId(companyId);
account.setCompanyId(companyId);
accountImdg.insert(account);
Company company = new Company();
company.setId(companyId);
company.setClearingCode("codeTest");
companyImdg.insert(company);
//ACT
addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_VERIFICATION,
PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L));
//waiting for kafka producer send message
verify(verificationResultImdgMock, timeout(30_000L).times(4))
.insert(settingResult.capture());
settingResult.getValue();
Collection<VerificationResult> result = verificationResultImdg.getAllValues();
result.size();
}
}