From 740a75823fc6fcf568a6a583bc011d1b08af12b6 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 16 Sep 2022 17:32:45 +0300 Subject: [PATCH] http://git.mfd.msk/mfd/clearing/issues/6 --- CompanySymbolServiceTest test done --- .../company/service/CompanySymbolService.java | 2 +- .../service/CompanySymbolServiceTest.java | 115 ++++++++++++++++++ .../company/service/ContactServiceTest.java | 108 ++++++++++++++++ 3 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java create mode 100644 clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java index 4a6f110af..86c968985 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java @@ -40,7 +40,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB CompanySymbolUpdateRequest req = userRequest.getRequestPayload(); log.debug("CompanySymbolUpdateRequest received"); CompanySymbols companySymbols = companySymbolsMap.getSingleObjectByID(req.getId()); - companySymbols.setCompanySymbol(req.getCompanySymbol()); +// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении companySymbols.setCompanySymbolValue(req.getCompanySymbolValue()); companySymbolsMap.update(companySymbols); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java new file mode 100644 index 000000000..e74ed25dd --- /dev/null +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java @@ -0,0 +1,115 @@ +package ru.spcex.clearing.company.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hazelcast.core.IMap; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.common.TopicPartition; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.company.utils.MatcherFactory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import java.util.Collections; +import java.util.HashMap; + +import static ru.spcex.clearing.company.utils.MatcherFactory.usingIgnoringFieldsComparator; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + HazelcastServiceTestConfiguration.class}) +class CompanySymbolServiceTest { + + public static final MatcherFactory.Matcher COMPANY_SYMBOL_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_COMPANY_SYMBOL_UPDATE = Consts.DESTINATION_COMPANY_SYMBOL_UPDATE; + private static Long currentId = 0L; + + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private MockConsumer mockConsumer; + + @BeforeEach + void setUp() { + mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST); + } + + @Test + void companySymbolUpdate() throws InterruptedException { + //ARRANGE + CompanySymbols existsCompanySymbols = new CompanySymbols(); + existsCompanySymbols.setId(currentId); + existsCompanySymbols.setCompanyId(currentId); + existsCompanySymbols.setCompanySymbol("0000"); + existsCompanySymbols.setCompanySymbolValue("exists companySymbolValue"); + + CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest(); + companySymbolUpdateRequest.setId(currentId); + companySymbolUpdateRequest.setCompanyId(currentId); + companySymbolUpdateRequest.setCompanySymbol("1234"); + companySymbolUpdateRequest.setCompanySymbolValue("new companySymbolValue"); + + BaseRequest baseUpdateRequest = new BaseRequest<>(); + baseUpdateRequest.setRequestPayload(companySymbolUpdateRequest); + baseUpdateRequest.setId(currentId); + baseUpdateRequest.setActionType(ActionType.UPDATE); + String jsonBaseForUpdatingRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseForUpdatingRequest = objectMapper.writeValueAsString(baseUpdateRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + CompanySymbols predictableCompanySymbols = new CompanySymbols(); + predictableCompanySymbols.setId(currentId); + predictableCompanySymbols.setCompanyId(currentId); + predictableCompanySymbols.setCompanySymbol("0000"); + predictableCompanySymbols.setCompanySymbolValue("new companySymbolValue"); + + //ACT + //service set up + CompanySymbolService companySymbolService = new CompanySymbolService(mockConsumer, hazelcastServiceTest); + Thread.sleep(10000); + //callbacks set up + companySymbolService.afterPropertiesSet(); + Thread.sleep(10000); + + IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_CompanySymbols); + iMap.put(currentId, existsCompanySymbols); + + //KAFKA + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION, 0, "key", jsonBaseForUpdatingRequest)); + }); + HashMap startOffsetsUpdating = new HashMap<>(); + TopicPartition tpUpdating = new TopicPartition(TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION); + startOffsetsUpdating.put(tpUpdating, 0L); + mockConsumer.updateBeginningOffsets(startOffsetsUpdating); + + //ASSERT + Thread.sleep(10000); + CompanySymbols resultUpdating = iMap.get(currentId); + COMPANY_SYMBOL_MATCHER.assertMatch(resultUpdating, predictableCompanySymbols); + + //preparing hazelcastImdgProvider for next test + iMap.clear(); + currentId++; + } +} \ No newline at end of file diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java new file mode 100644 index 000000000..6c0f2d770 --- /dev/null +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java @@ -0,0 +1,108 @@ +package ru.spcex.clearing.company.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hazelcast.core.IMap; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.common.TopicPartition; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration; +import ru.spcex.clearing.company.utils.MatcherFactory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +import java.util.Collections; +import java.util.HashMap; + +import static ru.spcex.clearing.company.utils.MatcherFactory.usingIgnoringFieldsComparator; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + HazelcastServiceTestConfiguration.class}) +class ContactServiceTest { + + public static final MatcherFactory.Matcher CONTACT_MATCHER = usingIgnoringFieldsComparator(); + private static final int PARTITION = 0; + private static final String TOPIC_CONTACT_UPDATE = Consts.DESTINATION_CONTACT_UPDATE; + private static Long currentId = 0L; + + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private MockConsumer mockConsumer; + + @BeforeEach + void setUp() { + mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST); + } + + @Test + void contactUpdate() throws InterruptedException { + //ARRANGE + ClearingMemberCategory existsСlearingMemberCategory = new ClearingMemberCategory(); + existsСlearingMemberCategory.setId(currentId); + existsСlearingMemberCategory.setClearingMemberCategory("0000"); + + ClearingMemberCategoryUpdateRequest memberCategoryUpdateRequest = new ClearingMemberCategoryUpdateRequest(); + memberCategoryUpdateRequest.setId(currentId); + memberCategoryUpdateRequest.setClearingMemberCategory("1234"); + BaseRequest baseUpdateRequest = new BaseRequest<>(); + baseUpdateRequest.setRequestPayload(memberCategoryUpdateRequest); + baseUpdateRequest.setId(currentId); + baseUpdateRequest.setActionType(ActionType.UPDATE); + String jsonBaseForUpdatingRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseForUpdatingRequest = objectMapper.writeValueAsString(baseUpdateRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory(); + predictableClearingMemberCategory.setId(currentId); + predictableClearingMemberCategory.setClearingMemberCategory("1234"); + + //ACT + //service set up + ClearingMemberCategoryService clearingMemberCategoryService = new ClearingMemberCategoryService(mockConsumer, hazelcastServiceTest); + Thread.sleep(10000); + //callbacks set up + clearingMemberCategoryService.afterPropertiesSet(); + Thread.sleep(10000); + + IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_ClearingMemberCategory); + iMap.put(currentId, existsСlearingMemberCategory); + + //KAFKA + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_CONTACT_UPDATE, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_CONTACT_UPDATE, PARTITION, 0, "key", jsonBaseForUpdatingRequest)); + }); + HashMap startOffsetsUpdating = new HashMap<>(); + TopicPartition tpUpdating = new TopicPartition(TOPIC_CONTACT_UPDATE, PARTITION); + startOffsetsUpdating.put(tpUpdating, 0L); + mockConsumer.updateBeginningOffsets(startOffsetsUpdating); + + //ASSERT + Thread.sleep(10000); + ClearingMemberCategory resultUpdating = iMap.get(currentId); + CONTACT_MATCHER.assertMatch(resultUpdating, predictableClearingMemberCategory); + + //preparing hazelcastImdgProvider for next test + iMap.clear(); + currentId++; + } +} \ No newline at end of file