From 18959e3bebf7e4b57f43df6ef3dc7d34585fc900 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 1 Mar 2023 12:31:10 +0300 Subject: [PATCH] Creating tests for registry-service. --- .../service/BalanceRegisterServiceTest.java | 113 +++++++++++++++ .../ClearMemberRegisterChangeServiceTest.java | 90 ++++++++++++ .../ClearMemberRegisterServiceTest.java | 135 ++++++++++++++++++ .../service/ContractRegisterServiceTest.java | 112 +++++++++++++++ .../CoveredDealRegisterServiceTest.java | 116 +++++++++++++++ .../service/OrderRegisterServiceTest.java | 105 ++++++++++++++ .../UncoveredDealRegisterServiceTest.java | 118 +++++++++++++++ .../registry/BalanceRegisterNewRequest.java | 8 ++ .../ClearMemberRegisterChangeNewRequest.java | 6 + .../ClearMemberRegisterNewRequest.java | 26 ++++ .../registry/ContractRegisterNewRequest.java | 18 +++ .../CoveredDealRegisterNewRequest.java | 16 +++ .../cud/registry/OrderRegisterNewRequest.java | 12 ++ .../UncoveredDealRegisterNewRequest.java | 16 +++ 14 files changed, 891 insertions(+) create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/BalanceRegisterServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ContractRegisterServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/CoveredDealRegisterServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/OrderRegisterServiceTest.java create mode 100644 clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterServiceTest.java diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/BalanceRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/BalanceRegisterServiceTest.java new file mode 100644 index 000000000..4b5167e0d --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/BalanceRegisterServiceTest.java @@ -0,0 +1,113 @@ +package ru.spcex.clearing.registry.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.misc.BalanceRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.BalanceRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.time.Instant; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + BalanceRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class BalanceRegisterServiceTest { + public static final MatcherFactory.Matcher ADMITTED_DEAL_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_BALANCE_REGISTER_NEW = Consts.REGISTRY_BALANCE_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + BalanceRegisterService balanceRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg balanceRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.balanceRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_BalanceRegister, BalanceRegister.class); + } + + /** + * {@link BalanceRegisterService#balanceRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link BalanceRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link BalanceRegisterNewRequest}:
+ */ + @Test + void balanceRegisterNew() { + //ARRANGE + Long companyId = 1234L; + BalanceRegisterNewRequest balanceRegisterNewRequest = new BalanceRegisterNewRequest(); + balanceRegisterNewRequest.setsDf01Date(Instant.now()); + balanceRegisterNewRequest.setCurrencyCode("currencyCode"); + balanceRegisterNewRequest.setSetHouseName("houseName"); + balanceRegisterNewRequest.setAccount("121546854"); + balanceRegisterNewRequest.setInfoAccount("account"); + balanceRegisterNewRequest.setRemainderSum(new BigDecimal(76)); + balanceRegisterNewRequest.setBlockedSum(new BigDecimal(16)); + balanceRegisterNewRequest.setUnblockedSum(new BigDecimal(46)); + balanceRegisterNewRequest.setInn("inn"); + balanceRegisterNewRequest.setMarket(12L); + balanceRegisterNewRequest.setFullName("fullName"); + balanceRegisterNewRequest.setTypeRemains("typeRemains"); + balanceRegisterNewRequest.setDocNumber("docNumber"); + balanceRegisterNewRequest.setCompanyId(companyId); + + BalanceRegister predictableBalanceRegister = new BalanceRegister(); + predictableBalanceRegister.setsDf01Date(balanceRegisterNewRequest.getsDf01Date()); + predictableBalanceRegister.setCurrencyCode(balanceRegisterNewRequest.getCurrencyCode()); + predictableBalanceRegister.setSetHouseName(balanceRegisterNewRequest.getSetHouseName()); + predictableBalanceRegister.setAccount(balanceRegisterNewRequest.getAccount()); + predictableBalanceRegister.setInfoAccount(balanceRegisterNewRequest.getInfoAccount()); + predictableBalanceRegister.setRemainderSum(balanceRegisterNewRequest.getRemainderSum()); + predictableBalanceRegister.setBlockedSum(balanceRegisterNewRequest.getBlockedSum()); + predictableBalanceRegister.setUnblockedSum(balanceRegisterNewRequest.getUnblockedSum()); + predictableBalanceRegister.setInn(balanceRegisterNewRequest.getInn()); + predictableBalanceRegister.setMarket(balanceRegisterNewRequest.getMarket()); + predictableBalanceRegister.setFullName(balanceRegisterNewRequest.getFullName()); + predictableBalanceRegister.setTypeRemains(balanceRegisterNewRequest.getTypeRemains()); + predictableBalanceRegister.setDocNumber(balanceRegisterNewRequest.getDocNumber()); + predictableBalanceRegister.setCompanyId(balanceRegisterNewRequest.getCompanyId()); + //ACT + String jsonString = getJsonStringForNew(balanceRegisterNewRequest, ID); + + addRecordToKafka((MockConsumer) balanceRegisterService.getConsumer(), TOPIC_REGISTRY_BALANCE_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + BalanceRegister resultNew = balanceRegisterMap.getSingleObjectBySQL(String.format("companyId = %d", companyId)); + predictableBalanceRegister.setId(resultNew.getId()); + ADMITTED_DEAL_REGISTER_MATCHER.assertMatch(resultNew, predictableBalanceRegister); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeServiceTest.java new file mode 100644 index 000000000..844ef4480 --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeServiceTest.java @@ -0,0 +1,90 @@ +package ru.spcex.clearing.registry.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.register.ClearMemberRegisterChange; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ClearMemberRegisterChangeNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.time.Instant; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ClearMemberRegisterChangeService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class ClearMemberRegisterChangeServiceTest { + public static final MatcherFactory.Matcher CLEAR_MEMBER_REGISTER_CHANGE_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW = Consts.REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + ClearMemberRegisterChangeService clearMemberRegisterChangeService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg clearMemberRegisterChangeMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.clearMemberRegisterChangeMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ClearMemberRegisterChange, ClearMemberRegisterChange.class); + } + + /** + * {@link ClearMemberRegisterChangeService#clearMemberRegisterChangeNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link ClearMemberRegisterChange} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link ClearMemberRegisterChangeNewRequest}:
+ */ + @Test + void clearMemberRegisterChangeNew() { + //ARRANGE + String comment = "comment"; + ClearMemberRegisterChangeNewRequest clearMemberRegisterChangeNewRequest = new ClearMemberRegisterChangeNewRequest(); + clearMemberRegisterChangeNewRequest.setDate(Instant.now()); + clearMemberRegisterChangeNewRequest.setComment("comment"); + clearMemberRegisterChangeNewRequest.setClearingCode("clearingCode"); + + ClearMemberRegisterChange predictableClearMemberRegisterChange = new ClearMemberRegisterChange(); + predictableClearMemberRegisterChange.setDate(clearMemberRegisterChangeNewRequest.getDate()); + predictableClearMemberRegisterChange.setComment(clearMemberRegisterChangeNewRequest.getComment()); + predictableClearMemberRegisterChange.setClearingCode(clearMemberRegisterChangeNewRequest.getClearingCode()); + //ACT + String jsonString = getJsonStringForNew(clearMemberRegisterChangeNewRequest, ID); + + addRecordToKafka((MockConsumer) clearMemberRegisterChangeService.getConsumer(), TOPIC_REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + ClearMemberRegisterChange resultNew = clearMemberRegisterChangeMap.getSingleObjectBySQL(String.format("comment = %s", comment)); + predictableClearMemberRegisterChange.setId(resultNew.getId()); + CLEAR_MEMBER_REGISTER_CHANGE_MATCHER.assertMatch(resultNew, predictableClearMemberRegisterChange); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterServiceTest.java new file mode 100644 index 000000000..0cbabb914 --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ClearMemberRegisterServiceTest.java @@ -0,0 +1,135 @@ +package ru.spcex.clearing.registry.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.misc.ClearMemberRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ClearMemberRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.time.Instant; +import java.time.LocalDate; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ClearMemberRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class ClearMemberRegisterServiceTest { + public static final MatcherFactory.Matcher CLEAR_MEMBER_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_CLEAR_MEMBER_REGISTER_NEW = Consts.REGISTRY_CLEAR_MEMBER_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + ClearMemberRegisterService clearMemberRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg clearMemberRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.clearMemberRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ClearMemberRegister, ClearMemberRegister.class); + } + + /** + * {@link ClearMemberRegisterService#clearMemberRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link ClearMemberRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link ClearMemberRegisterNewRequest}:
+ */ + @Test + void clearMemberRegisterNew() { + //ARRANGE + Long bank = 1234L; + ClearMemberRegisterNewRequest clearMemberRegisterNewRequest = new ClearMemberRegisterNewRequest(); + clearMemberRegisterNewRequest.setTradingCode("tradingCode"); + clearMemberRegisterNewRequest.setClearingCode("clearingCode"); + clearMemberRegisterNewRequest.setFullName("fullName"); + clearMemberRegisterNewRequest.setShortName("shortName"); + clearMemberRegisterNewRequest.setCategoryList("categoryList"); + clearMemberRegisterNewRequest.setCorporationSole("corporationSole"); + clearMemberRegisterNewRequest.setAccount("1246984698"); + clearMemberRegisterNewRequest.setBank(bank); + clearMemberRegisterNewRequest.setBankName("bankName"); + clearMemberRegisterNewRequest.setInn("inn"); + clearMemberRegisterNewRequest.setBic("bic"); + clearMemberRegisterNewRequest.setOgrn("ogrn"); + clearMemberRegisterNewRequest.setCpp("cpp"); + clearMemberRegisterNewRequest.setOcpo("ocpo"); + clearMemberRegisterNewRequest.setContractNumber("contractNumber"); + clearMemberRegisterNewRequest.setContractDate(LocalDate.now()); + clearMemberRegisterNewRequest.setRegistrationDate(LocalDate.now()); + clearMemberRegisterNewRequest.setSystemDate(LocalDate.now()); + clearMemberRegisterNewRequest.setAccessDate(Instant.now()); + clearMemberRegisterNewRequest.setSuspentionDate(Instant.now()); + clearMemberRegisterNewRequest.setReopeningDate(Instant.now()); + clearMemberRegisterNewRequest.setCloseDate(Instant.now()); + clearMemberRegisterNewRequest.setExclusionDate(Instant.now()); + clearMemberRegisterNewRequest.setAddress("address"); + clearMemberRegisterNewRequest.setEmail("email"); + + ClearMemberRegister predictableClearMemberRegister = new ClearMemberRegister(); + predictableClearMemberRegister.setTradingCode(clearMemberRegisterNewRequest.getTradingCode()); + predictableClearMemberRegister.setClearingCode(clearMemberRegisterNewRequest.getClearingCode()); + predictableClearMemberRegister.setFullName(clearMemberRegisterNewRequest.getFullName()); + predictableClearMemberRegister.setShortName(clearMemberRegisterNewRequest.getShortName()); + predictableClearMemberRegister.setCategoryList(clearMemberRegisterNewRequest.getCategoryList()); + predictableClearMemberRegister.setCorporationSole(clearMemberRegisterNewRequest.getCorporationSole()); + predictableClearMemberRegister.setAccount(clearMemberRegisterNewRequest.getAccount()); + predictableClearMemberRegister.setBank(clearMemberRegisterNewRequest.getBank()); + predictableClearMemberRegister.setBankName(clearMemberRegisterNewRequest.getBankName()); + predictableClearMemberRegister.setInn(clearMemberRegisterNewRequest.getInn()); + predictableClearMemberRegister.setBic(clearMemberRegisterNewRequest.getBic()); + predictableClearMemberRegister.setOgrn(clearMemberRegisterNewRequest.getOgrn()); + predictableClearMemberRegister.setCpp(clearMemberRegisterNewRequest.getCpp()); + predictableClearMemberRegister.setOcpo(clearMemberRegisterNewRequest.getOcpo()); + predictableClearMemberRegister.setContractNumber(clearMemberRegisterNewRequest.getContractNumber()); + predictableClearMemberRegister.setContractDate(clearMemberRegisterNewRequest.getContractDate()); + predictableClearMemberRegister.setRegistrationDate(clearMemberRegisterNewRequest.getRegistrationDate()); + predictableClearMemberRegister.setSystemDate(clearMemberRegisterNewRequest.getSystemDate()); + predictableClearMemberRegister.setAccessDate(clearMemberRegisterNewRequest.getAccessDate()); + predictableClearMemberRegister.setSuspentionDate(clearMemberRegisterNewRequest.getSuspentionDate()); + predictableClearMemberRegister.setReopeningDate(clearMemberRegisterNewRequest.getReopeningDate()); + predictableClearMemberRegister.setCloseDate(clearMemberRegisterNewRequest.getCloseDate()); + predictableClearMemberRegister.setExclusionDate(clearMemberRegisterNewRequest.getExclusionDate()); + predictableClearMemberRegister.setAddress(clearMemberRegisterNewRequest.getAddress()); + predictableClearMemberRegister.setEmail(clearMemberRegisterNewRequest.getEmail()); + //ACT + String jsonString = getJsonStringForNew(clearMemberRegisterNewRequest, ID); + + addRecordToKafka((MockConsumer) clearMemberRegisterService.getConsumer(), TOPIC_REGISTRY_CLEAR_MEMBER_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + ClearMemberRegister resultNew = clearMemberRegisterMap.getSingleObjectBySQL(String.format("bank = %d", bank)); + predictableClearMemberRegister.setId(resultNew.getId()); + CLEAR_MEMBER_REGISTER_MATCHER.assertMatch(resultNew, predictableClearMemberRegister); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ContractRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ContractRegisterServiceTest.java new file mode 100644 index 000000000..3609a92e0 --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/ContractRegisterServiceTest.java @@ -0,0 +1,112 @@ +package ru.spcex.clearing.registry.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.register.ContractRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ContractRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.time.LocalDate; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ContractRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class ContractRegisterServiceTest { + public static final MatcherFactory.Matcher CLEAR_MEMBER_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_CONTRACT_REGISTER_NEW = Consts.REGISTRY_CONTRACT_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + ContractRegisterService contractRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg contractRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.contractRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ContractRegister, ContractRegister.class); + } + + /** + * {@link ContractRegisterService#contractRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link ContractRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link ContractRegisterNewRequest}:
+ */ + @Test + void contractRegisterNew() { + //ARRANGE + Long companyId = 1234L; + ContractRegisterNewRequest contractRegisterNewRequest = new ContractRegisterNewRequest(); + contractRegisterNewRequest.setName("name"); + contractRegisterNewRequest.setNumber("number"); + contractRegisterNewRequest.setIssueDate(LocalDate.now()); + contractRegisterNewRequest.setCompanyFullName(1651656L); + contractRegisterNewRequest.setCompanyId(companyId); + contractRegisterNewRequest.setDocumentType("documentType"); + contractRegisterNewRequest.setIssuePlace("issuePlace"); + contractRegisterNewRequest.setIssuer("issuer"); + contractRegisterNewRequest.setIssuerCode("issuerCode"); + contractRegisterNewRequest.setPlace("place"); + contractRegisterNewRequest.setValidFromDate(LocalDate.now()); + contractRegisterNewRequest.setValidToDate(LocalDate.now()); + contractRegisterNewRequest.setCloseDate(LocalDate.now()); + contractRegisterNewRequest.setComment("comment"); + + ContractRegister predictableContractRegister = new ContractRegister(); + predictableContractRegister.setName(contractRegisterNewRequest.getName()); + predictableContractRegister.setNumber(contractRegisterNewRequest.getNumber()); + predictableContractRegister.setIssueDate(contractRegisterNewRequest.getIssueDate()); + predictableContractRegister.setCompanyFullName(contractRegisterNewRequest.getCompanyFullName()); + predictableContractRegister.setCompanyId(contractRegisterNewRequest.getCompanyId()); + predictableContractRegister.setDocumentType(contractRegisterNewRequest.getDocumentType()); + predictableContractRegister.setIssuePlace(contractRegisterNewRequest.getIssuePlace()); + predictableContractRegister.setIssuer(contractRegisterNewRequest.getIssuer()); + predictableContractRegister.setIssuerCode(contractRegisterNewRequest.getIssuerCode()); + predictableContractRegister.setPlace(contractRegisterNewRequest.getPlace()); + predictableContractRegister.setValidFromDate(contractRegisterNewRequest.getValidFromDate()); + predictableContractRegister.setValidToDate(contractRegisterNewRequest.getValidToDate()); + predictableContractRegister.setCloseDate(contractRegisterNewRequest.getCloseDate()); + predictableContractRegister.setComment(contractRegisterNewRequest.getComment()); + //ACT + String jsonString = getJsonStringForNew(contractRegisterNewRequest, ID); + + addRecordToKafka((MockConsumer) contractRegisterService.getConsumer(), TOPIC_REGISTRY_CONTRACT_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + ContractRegister resultNew = contractRegisterMap.getSingleObjectBySQL(String.format("companyId = %d", companyId)); + predictableContractRegister.setId(resultNew.getId()); + CLEAR_MEMBER_REGISTER_MATCHER.assertMatch(resultNew, predictableContractRegister); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/CoveredDealRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/CoveredDealRegisterServiceTest.java new file mode 100644 index 000000000..921dfe0a3 --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/CoveredDealRegisterServiceTest.java @@ -0,0 +1,116 @@ +package ru.spcex.clearing.registry.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.register.CoveredDealRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.CoveredDealRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + CoveredDealRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class CoveredDealRegisterServiceTest { + public static final MatcherFactory.Matcher COVERED_DEAL_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_COVERED_DEAL_REGISTER_NEW = Consts.REGISTRY_COVERED_DEAL_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + CoveredDealRegisterService coveredDealRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg coveredDealRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.coveredDealRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CoveredDealRegister, CoveredDealRegister.class); + } + + /** + * {@link CoveredDealRegisterService#coveredDealRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link CoveredDealRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link CoveredDealRegisterNewRequest}:
+ */ + @Test + void coveredDealRegisterNew() { + //ARRANGE + Long executionId = 1234L; + CoveredDealRegisterNewRequest coveredDealRegisterNewRequest = new CoveredDealRegisterNewRequest(); + coveredDealRegisterNewRequest.setExecutionId(executionId); + coveredDealRegisterNewRequest.setCompanyFullName("companyFullName"); + coveredDealRegisterNewRequest.setTradingDate(LocalDate.now()); + coveredDealRegisterNewRequest.setExchangeExecutionId(1212L); + coveredDealRegisterNewRequest.setExchangeExecutionTime(Instant.now()); + coveredDealRegisterNewRequest.setSecuritySymbol("securitySymbol"); + coveredDealRegisterNewRequest.setSecurityFullName("fullName"); + coveredDealRegisterNewRequest.setSellerFullName("sellerFullName"); + coveredDealRegisterNewRequest.setSellerClearingCode("sellerClearingCode"); + coveredDealRegisterNewRequest.setSellerAccount("sellerAccount"); + coveredDealRegisterNewRequest.setBuyerFullName("buyerFullName"); + coveredDealRegisterNewRequest.setBuyerClearingCode("buyerClearingCode"); + coveredDealRegisterNewRequest.setBuyerAccount("buyerAccount"); + coveredDealRegisterNewRequest.setAmount(new BigDecimal(412)); + coveredDealRegisterNewRequest.setClearingDate(LocalDate.now()); + + CoveredDealRegister predictableCoveredDealRegister = new CoveredDealRegister(); + predictableCoveredDealRegister.setExecutionId(coveredDealRegisterNewRequest.getExecutionId()); + predictableCoveredDealRegister.setCompanyFullName(coveredDealRegisterNewRequest.getCompanyFullName()); + predictableCoveredDealRegister.setTradingDate(coveredDealRegisterNewRequest.getTradingDate()); + predictableCoveredDealRegister.setExchangeExecutionId(coveredDealRegisterNewRequest.getExchangeExecutionId()); + predictableCoveredDealRegister.setExchangeExecutionTime(coveredDealRegisterNewRequest.getExchangeExecutionTime()); + predictableCoveredDealRegister.setSecuritySymbol(coveredDealRegisterNewRequest.getSecuritySymbol()); + predictableCoveredDealRegister.setSecurityFullName(coveredDealRegisterNewRequest.getSecurityFullName()); + predictableCoveredDealRegister.setSellerFullName(coveredDealRegisterNewRequest.getSellerFullName()); + predictableCoveredDealRegister.setSellerClearingCode(coveredDealRegisterNewRequest.getSellerClearingCode()); + predictableCoveredDealRegister.setSellerAccount(coveredDealRegisterNewRequest.getSellerAccount()); + predictableCoveredDealRegister.setBuyerFullName(coveredDealRegisterNewRequest.getBuyerFullName()); + predictableCoveredDealRegister.setBuyerClearingCode(coveredDealRegisterNewRequest.getBuyerClearingCode()); + predictableCoveredDealRegister.setBuyerAccount(coveredDealRegisterNewRequest.getBuyerAccount()); + predictableCoveredDealRegister.setAmount(coveredDealRegisterNewRequest.getAmount()); + predictableCoveredDealRegister.setClearingDate(coveredDealRegisterNewRequest.getClearingDate()); + //ACT + String jsonString = getJsonStringForNew(coveredDealRegisterNewRequest, ID); + + addRecordToKafka((MockConsumer) coveredDealRegisterService.getConsumer(), TOPIC_REGISTRY_COVERED_DEAL_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + CoveredDealRegister resultNew = coveredDealRegisterMap.getSingleObjectBySQL(String.format("executionId = %d", executionId)); + predictableCoveredDealRegister.setId(resultNew.getId()); + COVERED_DEAL_REGISTER_MATCHER.assertMatch(resultNew, predictableCoveredDealRegister); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/OrderRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/OrderRegisterServiceTest.java new file mode 100644 index 000000000..6cd5a8472 --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/OrderRegisterServiceTest.java @@ -0,0 +1,105 @@ +package ru.spcex.clearing.registry.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.register.OrderRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.OrderRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.time.LocalDate; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + OrderRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class OrderRegisterServiceTest { + public static final MatcherFactory.Matcher ORDER_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_ORDER_REGISTER_NEW = Consts.REGISTRY_ORDER_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + OrderRegisterService orderRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg orderRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.orderRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_OrderRegister, OrderRegister.class); + } + + /** + * {@link OrderRegisterService#orderRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link OrderRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link OrderRegisterNewRequest}:
+ */ + @Test + void orderRegisterNew() { + //ARRANGE + Long creditLegDirection = 1234L; + OrderRegisterNewRequest req = new OrderRegisterNewRequest(); + req.setCreditLegAccount("creditLegAccount"); + req.setCreditLegAmount(new BigDecimal(0)); + req.setCreditLegCurrencyCode("creditLegCurrencyCode"); + req.setCreditLegDirection(creditLegDirection); + req.setDebitLegAccount(req.getDebitLegAccount()); + req.setSender(req.getSender()); + req.setAddressee(req.getAddressee()); + req.setDocumentNumber(req.getDocumentNumber()); + req.setClearingDate(req.getClearingDate()); + req.setClearingDate(LocalDate.now()); + + OrderRegister predictableOrderRegister = new OrderRegister(); + predictableOrderRegister.setCreditLegAccount(req.getCreditLegAccount()); + predictableOrderRegister.setCreditLegAmount(req.getCreditLegAmount()); + predictableOrderRegister.setCreditLegCurrencyCode(req.getCreditLegCurrencyCode()); + predictableOrderRegister.setCreditLegDirection(req.getCreditLegDirection()); + predictableOrderRegister.setDebitLegAccount(req.getDebitLegAccount()); + predictableOrderRegister.setSender(req.getSender()); + predictableOrderRegister.setAddressee(req.getAddressee()); + predictableOrderRegister.setDocumentNumber(req.getDocumentNumber()); + predictableOrderRegister.setClearingDate(req.getClearingDate()); + predictableOrderRegister.setClearingDate(req.getClearingDate()); + //ACT + String jsonString = getJsonStringForNew(req, ID); + + addRecordToKafka((MockConsumer) orderRegisterService.getConsumer(), TOPIC_REGISTRY_ORDER_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + OrderRegister resultNew = orderRegisterMap.getSingleObjectBySQL(String.format("creditLegDirection = %d", creditLegDirection)); + predictableOrderRegister.setId(resultNew.getId()); + ORDER_REGISTER_MATCHER.assertMatch(resultNew, predictableOrderRegister); + } +} \ No newline at end of file diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterServiceTest.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterServiceTest.java new file mode 100644 index 000000000..26cc0f08d --- /dev/null +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterServiceTest.java @@ -0,0 +1,118 @@ +package ru.spcex.clearing.registry.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.register.UncoveredDealRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.UncoveredDealRegisterNewRequest; +import ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.registry.config.KafkaConfigTest; +import ru.spcex.clearing.registry.utils.MatcherFactory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +import static ru.spcex.clearing.registry.config.HazelcastServiceTestConfiguration.currentID; +import static ru.spcex.clearing.registry.utils.MatcherFactory.usingIgnoringFieldsComparator; +import static ru.spcex.clearing.registry.utils.TestUtils.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + UncoveredDealRegisterService.class, + KafkaConfigTest.class, + HazelcastServiceTestConfiguration.class}) +class UncoveredDealRegisterServiceTest { + public static final MatcherFactory.Matcher UNCOVERED_DEAL_REGISTER_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_REGISTRY_UNCOVERED_DEAL_REGISTER_NEW = Consts.REGISTRY_UNCOVERED_DEAL_REGISTER_NEW; + private static final Long ID = currentID.getAndIncrement(); + @Autowired + UncoveredDealRegisterService uncoveredDealRegisterService; + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private Imdg uncoveredDealRegisterMap; + + @Captor + private ArgumentCaptor producerRecord; + @SpyBean + private MockProducer mockProducer; + + @PostConstruct + private void init() { + hazelcastServiceTest.waitAvailable(); + this.uncoveredDealRegisterMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_UncoveredDealRegister, UncoveredDealRegister.class); + } + + /** + * {@link UncoveredDealRegisterService#uncoveredDealRegisterNew(BaseRequest)}
+ * Тест проверяет создание сущности {@link UncoveredDealRegister} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link UncoveredDealRegisterNewRequest}:
+ */ + @Test + void uncoveredDealRegisterNew() { + //ARRANGE + Long executionId = 1234L; + UncoveredDealRegisterNewRequest req = new UncoveredDealRegisterNewRequest(); + req.setExecutionId(executionId); + req.setCompanyFullName("companyFullName"); + req.setTradingDate(LocalDate.now()); + req.setExchangeExecutionId(121L); + req.setExchangeExecutionTime(Instant.now()); + req.setSecuritySymbol("securitySymbol"); + req.setSecurityFullName("fullName"); + req.setSellerFullName("sellerFullName"); + req.setSellerClearingCode("sellerClearingCode"); + req.setSellerAccount("sellerAccount"); + req.setBuyerFullName("buyerFullName"); + req.setBuyerClearingCode("clearingCode"); + req.setBuyerAccount("buyerAccount"); + req.setAmount(new BigDecimal(21)); + req.setResultStatus("resultStatus"); + req.setClearingDate(LocalDate.now()); + + UncoveredDealRegister predictableUncoveredDealRegister = new UncoveredDealRegister(); + predictableUncoveredDealRegister.setExecutionId(req.getExecutionId()); + predictableUncoveredDealRegister.setCompanyFullName(req.getCompanyFullName()); + predictableUncoveredDealRegister.setTradingDate(req.getTradingDate()); + predictableUncoveredDealRegister.setExchangeExecutionId(req.getExchangeExecutionId()); + predictableUncoveredDealRegister.setExchangeExecutionTime(req.getExchangeExecutionTime()); + predictableUncoveredDealRegister.setSecuritySymbol(req.getSecuritySymbol()); + predictableUncoveredDealRegister.setSecurityFullName(req.getSecurityFullName()); + predictableUncoveredDealRegister.setSellerFullName(req.getSellerFullName()); + predictableUncoveredDealRegister.setSellerClearingCode(req.getSellerClearingCode()); + predictableUncoveredDealRegister.setSellerAccount(req.getSellerAccount()); + predictableUncoveredDealRegister.setBuyerFullName(req.getBuyerFullName()); + predictableUncoveredDealRegister.setBuyerClearingCode(req.getBuyerClearingCode()); + predictableUncoveredDealRegister.setBuyerAccount(req.getBuyerAccount()); + predictableUncoveredDealRegister.setAmount(req.getAmount()); + predictableUncoveredDealRegister.setResultStatus(req.getResultStatus()); + predictableUncoveredDealRegister.setClearingDate(req.getClearingDate()); + //ACT + String jsonString = getJsonStringForNew(req, ID); + + addRecordToKafka((MockConsumer) uncoveredDealRegisterService.getConsumer(), TOPIC_REGISTRY_UNCOVERED_DEAL_REGISTER_NEW, PARTITION, 0, jsonString); + + //ASSERT + waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); + UncoveredDealRegister resultNew = uncoveredDealRegisterMap.getSingleObjectBySQL(String.format("executionId = %d", executionId)); + predictableUncoveredDealRegister.setId(resultNew.getId()); + UNCOVERED_DEAL_REGISTER_MATCHER.assertMatch(resultNew, predictableUncoveredDealRegister); + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java index 1b8db037c..171468da2 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java @@ -1,12 +1,18 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; import java.math.BigDecimal; import java.time.Instant; public class BalanceRegisterNewRequest { + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant sDf01Date; @@ -55,6 +61,8 @@ public class BalanceRegisterNewRequest { @JsonProperty private Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant updatedAt; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java index d3ccd715f..9f9eee634 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java @@ -1,10 +1,16 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; import java.time.Instant; public class ClearMemberRegisterChangeNewRequest { + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant date; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java index 21656ecab..eed8c58bd 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java @@ -1,6 +1,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import java.time.Instant; import java.time.LocalDate; @@ -52,27 +58,43 @@ public class ClearMemberRegisterNewRequest { @JsonProperty private String contractNumber; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate contractDate; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate registrationDate; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate systemDate; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant accessDate; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant suspentionDate; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant reopeningDate; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant closeDate; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant exclusionDate; @@ -85,9 +107,13 @@ public class ClearMemberRegisterNewRequest { @JsonProperty private Long id; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant updatedAt; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java index 579b37e19..8d65681a7 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java @@ -1,6 +1,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import java.time.Instant; import java.time.LocalDate; @@ -13,6 +19,8 @@ public class ContractRegisterNewRequest { @JsonProperty private String number; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate issueDate; @@ -37,12 +45,18 @@ public class ContractRegisterNewRequest { @JsonProperty private String place; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate validFromDate; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate validToDate; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate closeDate; @@ -52,9 +66,13 @@ public class ContractRegisterNewRequest { @JsonProperty private Long id; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant updatedAt; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java index a1d8ae2a4..ec1d1908b 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java @@ -2,6 +2,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import java.math.BigDecimal; import java.time.Instant; @@ -15,12 +21,16 @@ public class CoveredDealRegisterNewRequest { @JsonProperty public String companyFullName; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty public LocalDate tradingDate; @JsonProperty public Long exchangeExecutionId; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty public Instant exchangeExecutionTime; //todo clarify is timestamp suitable for this request or not @@ -54,12 +64,18 @@ public class CoveredDealRegisterNewRequest { @JsonProperty public Long id; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty public Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty public Instant updatedAt; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty public LocalDate clearingDate; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java index 9d1022cc9..7eae019d3 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java @@ -2,6 +2,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import java.math.BigDecimal; import java.time.Instant; @@ -36,12 +42,18 @@ public class OrderRegisterNewRequest { @JsonProperty private Long id; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant updatedAt; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate clearingDate; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java index 656ae8748..bdd06a020 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java @@ -1,6 +1,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.registry; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import java.math.BigDecimal; import java.time.Instant; @@ -14,12 +20,16 @@ public class UncoveredDealRegisterNewRequest { @JsonProperty private String companyFullName; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate tradingDate; @JsonProperty private Long exchangeExecutionId; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant exchangeExecutionTime; @@ -56,12 +66,18 @@ public class UncoveredDealRegisterNewRequest { @JsonProperty private Long id; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant createdAt; + @JsonSerialize(using = InstantDateTimeSerializer.class) + @JsonDeserialize(using = InstantDateTimeDeserializer.class) @JsonProperty private Instant updatedAt; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) @JsonProperty private LocalDate clearingDate;