diff --git a/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java b/src/main/java/de/ozgcloud/aggregation/transformation/AggregationMapping.java index d98c2350ef04f3920dc8d30f8ea4100236991d65..a6bceee0d0ad3d227ea44d58efdeeabbc67a4b40 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 0000000000000000000000000000000000000000..da72066a636fd55fa9db24336b81ad6aec241a7f --- /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 0000000000000000000000000000000000000000..6e331b6781dfcd5183f85d5b2d8f255c01d8dddc --- /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 f8bef952cdeeda6c19e7df8f928932f002a2ecbd..d100e47d538c011d225e00b3956330b68ab94d70 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 0000000000000000000000000000000000000000..c7973307c588cc0cb9a0236ddb048c23e9558346 --- /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); + } + } +}