diff --git a/src/main/java/de/ozgcloud/aggregation/AggregationLoader.java b/src/main/java/de/ozgcloud/aggregation/AggregationLoader.java index 3e8111b3be4c7cbc9af241b7fc6518a11e153032..34bc80bc94f5f550c88d0243ee8cfbf68fd46d80 100644 --- a/src/main/java/de/ozgcloud/aggregation/AggregationLoader.java +++ b/src/main/java/de/ozgcloud/aggregation/AggregationLoader.java @@ -47,13 +47,11 @@ class AggregationLoader { private final int batchSize = 100; public void load() { - Stream<Batch> vorgaenge = extractBatchesOfVorgaengeFromDataSource(); - Stream<Batch> deletedVorgaenge = Objects.isNull(formIdentifier) ? extractBatchesOfDeletedVorgaengeFromDataSource() : Stream.<Batch>empty(); - loadVorgaengeIntoRepository(Stream.concat(vorgaenge, deletedVorgaenge)); + loadVorgaengeIntoRepository(Stream.concat(extractBatchesOfVorgaengeFromDataSource(), extractBatchesOfDeletedVorgaengeFromDataSource())); } Stream<Batch> extractBatchesOfVorgaengeFromDataSource() { - return extractBatchesFromDataSource(page -> getVorgaengeFromDataSource(page)); + return extractBatchesFromDataSource(this::getVorgaengeFromDataSource); } List<OzgCloudVorgang> getVorgaengeFromDataSource(Page page) { @@ -77,7 +75,8 @@ class AggregationLoader { } Stream<Batch> extractBatchesOfDeletedVorgaengeFromDataSource() { - return extractBatchesFromDataSource(getPagedDeletedVorgaenge(vorgangService.findDeleted())); + return Objects.isNull(formIdentifier) ? extractBatchesFromDataSource(getPagedDeletedVorgaenge(vorgangService.findDeleted())) + : Stream.empty(); } Function<Page, List<OzgCloudVorgang>> getPagedDeletedVorgaenge(Stream<OzgCloudVorgangStub> allDeletedVorgaenge) { diff --git a/src/test/java/de/ozgcloud/aggregation/AggregationLoaderTest.java b/src/test/java/de/ozgcloud/aggregation/AggregationLoaderTest.java index dadcadf47a6df34ae4b299043e8f821b5d6db413..09e196006cdff8ba55b8731917de4f68a03f55b4 100644 --- a/src/test/java/de/ozgcloud/aggregation/AggregationLoaderTest.java +++ b/src/test/java/de/ozgcloud/aggregation/AggregationLoaderTest.java @@ -70,71 +70,34 @@ class AggregationLoaderTest { @Captor private ArgumentCaptor<Stream<Batch>> batchStreamCaptor; - @Nested - class TestOnFormIdentifierIsNull { - - @BeforeEach - void setUp() { - aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(null).build()); - doReturn(Stream.of(batchOfVorgaenge)).when(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); - doReturn(Stream.of(batchOfDeletedVorgaenge)).when(aggregationLoader).extractBatchesOfDeletedVorgaengeFromDataSource(); - doNothing().when(aggregationLoader).loadVorgaengeIntoRepository(any()); - } - - @Test - void shouldExtractBatchesOfVorgaengeFromDataSource() { - aggregationLoader.load(); - - verify(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); - } - - @Test - void shouldExtractBatchesOfDeletedVorgaengeFromDataSource() { - aggregationLoader.load(); - - verify(aggregationLoader).extractBatchesOfDeletedVorgaengeFromDataSource(); - } - - @Test - void shouldLoadVorgaengeIntoRepository() { - aggregationLoader.load(); - - verify(aggregationLoader).loadVorgaengeIntoRepository(batchStreamCaptor.capture()); - assertThat(batchStreamCaptor.getValue()).containsExactly(batchOfVorgaenge, batchOfDeletedVorgaenge); - } + @BeforeEach + void setUp() { + aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(formIdentifier).build()); + doReturn(Stream.of(batchOfVorgaenge)).when(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); + doReturn(Stream.of(batchOfDeletedVorgaenge)).when(aggregationLoader).extractBatchesOfDeletedVorgaengeFromDataSource(); + doNothing().when(aggregationLoader).loadVorgaengeIntoRepository(any()); } - @Nested - class TestOnFormIdentifierIsNotNull { - - @BeforeEach - void setUp() { - aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(formIdentifier).build()); - doReturn(Stream.of(batchOfVorgaenge)).when(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); - doNothing().when(aggregationLoader).loadVorgaengeIntoRepository(any()); - } - - @Test - void shouldExtractBatchesOfVorgaengeFromDataSource() { - aggregationLoader.load(); + @Test + void shouldExtractBatchesOfVorgaengeFromDataSource() { + aggregationLoader.load(); - verify(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); - } + verify(aggregationLoader).extractBatchesOfVorgaengeFromDataSource(); + } - @Test - void shouldNotExtractBatchesOfDeletedVorgaengeFromDataSource() { - aggregationLoader.load(); + @Test + void shouldExtractBatchesOfDeletedVorgaengeFromDataSource() { + aggregationLoader.load(); - verify(aggregationLoader, never()).extractBatchesOfDeletedVorgaengeFromDataSource(); - } + verify(aggregationLoader).extractBatchesOfDeletedVorgaengeFromDataSource(); + } - @Test - void shouldLoadVorgaengeIntoRepository() { - aggregationLoader.load(); + @Test + void shouldLoadVorgaengeIntoRepository() { + aggregationLoader.load(); - verify(aggregationLoader).loadVorgaengeIntoRepository(batchStreamCaptor.capture()); - assertThat(batchStreamCaptor.getValue()).containsExactly(batchOfVorgaenge); - } + verify(aggregationLoader).loadVorgaengeIntoRepository(batchStreamCaptor.capture()); + assertThat(batchStreamCaptor.getValue()).containsExactly(batchOfVorgaenge, batchOfDeletedVorgaenge); } } @@ -276,41 +239,71 @@ class AggregationLoaderTest { @Mock private Batch batch; - @BeforeEach - void init() { - aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(null).build()); - when(vorgangService.findDeleted()).thenReturn(deletedVorgaenge.stream()); - doReturn(functionToRetrieveData).when(aggregationLoader).getPagedDeletedVorgaenge(any()); - doReturn(Stream.of(batch)).when(aggregationLoader).extractBatchesFromDataSource(any()); - } + @Nested + class TestOnFormIdentifierNull { - @Test - void shouldFindDeleted() { - aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + @BeforeEach + void init() { + aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(null).build()); + when(vorgangService.findDeleted()).thenReturn(deletedVorgaenge.stream()); + doReturn(functionToRetrieveData).when(aggregationLoader).getPagedDeletedVorgaenge(any()); + doReturn(Stream.of(batch)).when(aggregationLoader).extractBatchesFromDataSource(any()); + } - verify(vorgangService).findDeleted(); - } + @Test + void shouldFindDeleted() { + aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); - @Test - void shouldGetPagedDeletedVorgaenge() { - aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + verify(vorgangService).findDeleted(); + } - verify(aggregationLoader).getPagedDeletedVorgaenge(deletedVorgaengeCaptor.capture()); - assertThat(deletedVorgaengeCaptor.getValue()).usingRecursiveFieldByFieldElementComparator().containsExactlyElementsOf(deletedVorgaenge); - } + @Test + void shouldGetPagedDeletedVorgaenge() { + aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); - @Test - void shouldExtractWithDataRetrievalFunction() { - aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + verify(aggregationLoader).getPagedDeletedVorgaenge(deletedVorgaengeCaptor.capture()); + assertThat(deletedVorgaengeCaptor.getValue()).usingRecursiveFieldByFieldElementComparator() + .containsExactlyElementsOf(deletedVorgaenge); + } + + @Test + void shouldExtractWithDataRetrievalFunction() { + aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + + verify(aggregationLoader).extractBatchesFromDataSource(functionToRetrieveData); + } + + @Test + void shouldReturnExtractedBatches() { + var extracted = aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); - verify(aggregationLoader).extractBatchesFromDataSource(functionToRetrieveData); + assertThat(extracted).containsExactly(batch); + } } - @Test - void shouldReturnExtractedBatches() { - var extracted = aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + @Nested + class TestOnFormIdentifierNotNull { - assertThat(extracted).containsExactly(batch); + @BeforeEach + void init() { + aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(formIdentifier).build()); + } + + @Test + void shouldNotFindDeleted() { + aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + + verify(vorgangService, never()).findDeleted(); + } + + @Test + void shouldReturnEmptyStream() { + aggregationLoader = spy(aggregationLoaderBuilder.formIdentifier(formIdentifier).build()); + + var extracted = aggregationLoader.extractBatchesOfDeletedVorgaengeFromDataSource(); + + assertThat(extracted).isEmpty(); + } } }