From aee6177726d977d5d1fed00f58fd1cafb1bc4e72 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Thu, 27 Mar 2025 16:32:24 +0100 Subject: [PATCH] OZG-7837 extand WarehouseRepository --- .../transformation/AggregationMapping.java | 1 + .../warehouse/CustomWarehouseRepository.java | 8 +++ .../CustomWarehouseRepositoryImpl.java | 22 +++++++ .../warehouse/WarehouseRepository.java | 2 +- .../CustomWarehouseRepositoryImplTest.java | 58 +++++++++++++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepository.java create mode 100644 src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImpl.java create mode 100644 src/test/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImplTest.java diff --git a/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java b/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java index d98c235..a6bceee 100644 --- a/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java +++ b/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java @@ -36,6 +36,7 @@ import lombok.ToString; public class AggregationMapping { private FormIdentifier formIdentifier; + private String name; @Singular private List<FieldMapping> fieldMappings; diff --git a/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepository.java b/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepository.java new file mode 100644 index 0000000..da72066 --- /dev/null +++ b/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepository.java @@ -0,0 +1,8 @@ +package de.ozgcloud.aggregation.warehouse; + +interface CustomWarehouseRepository { + + DocumentEntry saveInCollection(DocumentEntry documentEntry, String collectionName); + + void deleteCollection(String collectionName); +} diff --git a/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImpl.java b/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImpl.java new file mode 100644 index 0000000..6e331b6 --- /dev/null +++ b/src/main/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImpl.java @@ -0,0 +1,22 @@ +package de.ozgcloud.aggregation.warehouse; + +import org.springframework.data.mongodb.core.MongoTemplate; + +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +class CustomWarehouseRepositoryImpl implements CustomWarehouseRepository { + + private final MongoTemplate mongoTemplate; + + @Override + public DocumentEntry saveInCollection(DocumentEntry documentEntry, String collectionName) { + return mongoTemplate.save(documentEntry, collectionName); + } + + @Override + public void deleteCollection(String collectionName) { + mongoTemplate.dropCollection(collectionName); + } + +} diff --git a/src/main/java/de/ozgcloud/aggregation/warehouse/WarehouseRepository.java b/src/main/java/de/ozgcloud/aggregation/warehouse/WarehouseRepository.java index f8bef95..d100e47 100644 --- a/src/main/java/de/ozgcloud/aggregation/warehouse/WarehouseRepository.java +++ b/src/main/java/de/ozgcloud/aggregation/warehouse/WarehouseRepository.java @@ -27,6 +27,6 @@ import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository -public interface WarehouseRepository extends MongoRepository<DocumentEntry, String> { +public interface WarehouseRepository extends CustomWarehouseRepository, MongoRepository<DocumentEntry, String> { } diff --git a/src/test/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImplTest.java b/src/test/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImplTest.java new file mode 100644 index 0000000..c797330 --- /dev/null +++ b/src/test/java/de/ozgcloud/aggregation/warehouse/CustomWarehouseRepositoryImplTest.java @@ -0,0 +1,58 @@ +package de.ozgcloud.aggregation.warehouse; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.data.mongodb.core.MongoTemplate; + +import com.thedeanda.lorem.LoremIpsum; + +class CustomWarehouseRepositoryImplTest { + + @InjectMocks + private CustomWarehouseRepositoryImpl repository; + + @Mock + private MongoTemplate mongoTemplate; + + @Nested + class TestSaveInCollection { + + private final DocumentEntry documentEntry = DocumentEntryTestFactory.create(); + private final String collectionName = LoremIpsum.getInstance().getWords(1); + + @Test + void testSaveInCollection() { + repository.saveInCollection(documentEntry, collectionName); + + verify(mongoTemplate).save(documentEntry, collectionName); + } + + @Test + void shouldReturnSavedDocumentEntry() { + var savedDocumentEntry = DocumentEntryTestFactory.create(); + when(mongoTemplate.save(documentEntry, collectionName)).thenReturn(savedDocumentEntry); + + var returnedDocumentEntry = repository.saveInCollection(documentEntry, collectionName); + + assertThat(returnedDocumentEntry).isEqualTo(savedDocumentEntry); + } + } + + @Nested + class TestDeleteCollection { + + private final String collectionName = LoremIpsum.getInstance().getWords(1); + + @Test + void shouldDropCollection() { + repository.deleteCollection(collectionName); + + verify(mongoTemplate).dropCollection(collectionName); + } + } +} -- GitLab