diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11Exporter.java index 3083d3ab7..e307d1085 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11Exporter.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.swt.exporter.services.exportimpl; import com.hazelcast.aws.utility.StringUtil; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.sdf.SDf11; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.importexport.SwtExporterRequest; @@ -68,8 +69,10 @@ public class DF11Exporter extends AbstractExporterService { swtHeaderData.setType(typeForHeader()); swtHeaderData.setDateTime(LocalDateTime.now()); swtHeaderData.setValFor20Tag(java.util.UUID.randomUUID().toString()); - if (record != null) { + if (record != null && StringUtils.hasText(record.getInDocument())) { swtHeaderData.setValFor21Tag(record.getInDocument()); + } else { + swtHeaderData.setValFor21Tag("NONREF"); } return swtHeaderData; } diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/AbstractServiceTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/AbstractServiceTest.java index 8c2fd1d31..d3ce360e5 100644 --- a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/AbstractServiceTest.java +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/AbstractServiceTest.java @@ -4,43 +4,58 @@ import org.apache.kafka.clients.producer.Producer; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.kafka.core.KafkaTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.clearing.swt.exporter.config.ExportSWTServiceSettingsTest; +import ru.spcex.clearing.swt.exporter.config.SFTPTestConfig; +import ru.spcex.clearing.swt.exporter.services.FileStorage; +import ru.spcex.clearing.swt.exporter.services.LauncherCommandReceiver; +import ru.spcex.clearing.swt.exporter.services.exportimpl.DF09Exporter; +import ru.spcex.clearing.swt.exporter.services.exportimpl.DF11Exporter; import ru.spcex.clearing.test.config.ImdgTestConfig; import ru.spcex.clearing.test.config.KafkaTestConfig; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import java.time.LocalDate; - import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID; import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { + SFTPTestConfig.class, + ExportSWTServiceSettingsTest.class, + LauncherCommandReceiver.class, + FileStorage.class, + DF09Exporter.class, + DF11Exporter.class, ImdgTestConfig.class, KafkaTestConfig.class}) public abstract class AbstractServiceTest { protected static final long id = currentID.getAndIncrement(); protected Imdg registryImdg; protected Imdg tradingClearingRegistryImdg; - protected LocalDate currentDate = LocalDate.now(); - protected String tcrA = "1324A234"; - protected String tcrD = "124324A234"; - protected Long securityIdFirst = 12L; + protected Long generationId = 340290054L; protected Long securityIdSecond = 23L; @Autowired @Qualifier("mockProducer") protected Producer mockProducer; + @Autowired + @Qualifier("kafkaTestTemplate") + protected KafkaTemplate kafkaTemplate; + @Autowired protected KafkaSender kafkaSender; + @Autowired + protected LauncherCommandReceiver commandReceiver; + @Autowired @Qualifier("hazelcastServiceTest") protected ImdgProvider imdgProvider; diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/ExportSWTServiceSettingsTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/ExportSWTServiceSettingsTest.java new file mode 100644 index 000000000..82916cb5f --- /dev/null +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/ExportSWTServiceSettingsTest.java @@ -0,0 +1,16 @@ +package ru.spcex.clearing.swt.exporter.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.spcex.clearing.swt.exporter.config.settings.ExportSwtServiceSettings; + +@Configuration +public class ExportSWTServiceSettingsTest { + + @Bean + public ExportSwtServiceSettings settings(){ + ExportSwtServiceSettings settings = new ExportSwtServiceSettings(); + settings.setDocOut("D:\\docs and T3\\clearing\\swt"); + return settings; + } +} diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/SFTPTestConfig.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/SFTPTestConfig.java new file mode 100644 index 000000000..19dac4d94 --- /dev/null +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/config/SFTPTestConfig.java @@ -0,0 +1,31 @@ +package ru.spcex.clearing.swt.exporter.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.integration.sftp.session.SftpFileInfo; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +@Configuration +public class SFTPTestConfig { + @Bean + public SFTPConfig.SftpGateway sftpGateway(){ + return new SftpGateway(); + } + + public static class SftpGateway implements SFTPConfig.SftpGateway{ + + @Override + public void sendToSftp(File file) { + + } + + @Override + public List listFiles(String dir) { + return new ArrayList<>(); + } + } + +} diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java index 668829f10..5f42cc630 100644 --- a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java @@ -11,7 +11,7 @@ import java.time.temporal.ChronoUnit; import static org.junit.jupiter.api.Assertions.assertEquals; -class AbstractExporterServiceTest extends AbstractServiceTest { +public class AbstractExporterServiceTest extends AbstractServiceTest { @PostConstruct public void init() { super.init(); diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java new file mode 100644 index 000000000..6a684c58b --- /dev/null +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java @@ -0,0 +1,60 @@ +package ru.spcex.clearing.swt.exporter.services.exportimpl; + +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.mockito.ArgumentCaptor; +import ru.clearing.classes.statics.data.sdf.SDf11; +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.importexport.SwtExporterRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.system.JournalSdf; +import ru.spcex.clearing.swt.exporter.services.AbstractExporterServiceTest; +import ru.spcex.platform.enumeration.SwtTable; +import ru.spcex.platform.imdg.api.Imdg; + +import java.time.Instant; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.verify; +import static ru.spcex.clearing.test.TestUtils.addRecordToKafka; +import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew; +import static ru.spcex.clearing.test.config.KafkaTestConfig.getCaptor; + +class DF11ExporterTest extends AbstractExporterServiceTest { + + /** + * Тест проверяет создание строк документа DF-11 .
+ */ +// @Test + void cdeateSdf() { + SwtTable type = SwtTable.SDF_11; + Imdg map = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf11, SDf11.class); + SDf11 sDf11 = new SDf11(); + sDf11.setOutDocument("outDocumentTest"); + sDf11.setInDocument("inDocumentTest"); + sDf11.setDepoCode("depoCodeTest"); + sDf11.setQuantity("1212"); + sDf11.setSecurityCode("securityCodeTest"); + sDf11.setClientName("clientNameTest"); + sDf11.setResult("resultTest"); + sDf11.setGenerationTime(Instant.now()); + sDf11.setGenerationId(generationId); + map.insert(sDf11); + SwtExporterRequest swtExporterRequest = new SwtExporterRequest(); + swtExporterRequest.setGroupId(generationId); + swtExporterRequest.setType(type.getKey()); + String request = getJsonStringForNew(swtExporterRequest, generationId); + addRecordToKafka((MockConsumer) commandReceiver.getConsumer(), Consts.SWT_EXPORTER, 0, 0, request); + + //waiting for kafka send message (finale event) + ArgumentCaptor captor = getCaptor(kafkaTemplate); + verify(kafkaTemplate, timeout(30_000L).times(1)) + .send(captor.capture()); + + BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); + JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); + assertEquals(generationId, journalSdf.getRegistrationNumber()); + } +} \ No newline at end of file