From e24cece9945a2a4f4fb13a577b8a100932b9a0c6 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 17 Mar 2023 18:17:38 +0300 Subject: [PATCH] Adding test VerificationResultComponentTest for clearing-service. --- .../service/AbstractClearingTest.java | 3 + .../service/PaymentUpdateBySdf04Test.java | 2 +- .../VerificationResultComponentTest.java | 111 ++++++++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/AbstractClearingTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/AbstractClearingTest.java index a0807ff77..3dc3ab16e 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/AbstractClearingTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/AbstractClearingTest.java @@ -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); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java index 1ec9a6268..1cf4fea50 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java @@ -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 settingResult; @Autowired EventsReceiver eventsReceiver; ImdgHazelcast paymentImdgsMock; + private ArgumentCaptor settingResult; private Imdg paymentImdgs; private Imdg sdf04Imdg; diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java new file mode 100644 index 000000000..a58bda101 --- /dev/null +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java @@ -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 settingResult = ArgumentCaptor.forClass(VerificationResult.class); + @Autowired + EventsReceiver eventsReceiver; + private Imdg sdf01Imdg; + private Imdg accountBalanceImdg; + private Imdg accountImdg; + private Imdg companyImdg; + private Imdg verificationResultImdg; + private Imdg 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 result = verificationResultImdg.getAllValues(); + result.size(); + } +} \ No newline at end of file