From 90dfc4dfe216dab670c71f1600741196c2699ed0 Mon Sep 17 00:00:00 2001 From: Antal2 Date: Tue, 15 Feb 2022 10:24:05 +0100 Subject: [PATCH 1/2] Mock Fusion instance and Documents correctly in IndexStageTestBase --- .../indexing/sdk/test/IndexStageTestBase.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java b/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java index 3f83112..0897837 100644 --- a/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java +++ b/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java @@ -2,6 +2,7 @@ import com.lucidworks.indexing.api.Document; import com.lucidworks.indexing.api.IndexStage; +import com.lucidworks.indexing.api.fusion.Documents; import com.lucidworks.indexing.api.fusion.Fusion; import com.lucidworks.indexing.config.IndexStageConfig; import org.junit.runner.RunWith; @@ -11,6 +12,8 @@ import java.util.function.Consumer; +import static org.mockito.ArgumentMatchers.any; + /** * Base class for index stage unit tests. * @param index stage config class @@ -31,12 +34,21 @@ public abstract class IndexStageTestBase { * @throws ReflectiveOperationException when unable to instantiate stage class using default no param constructor */ public > S createStage(Class stageClass, C config) throws ReflectiveOperationException { + mockDocumentsInFusion(); + S stage = stageClass.getDeclaredConstructor().newInstance(); stage.init(config, fusion); return stage; } + private void mockDocumentsInFusion() { + Documents documents = Mockito.mock(Documents.class); + Mockito.when(documents.newDocument()).thenReturn(new TestDocument(null)); + Mockito.when(documents.newDocument(any())).then(invocation -> new TestDocument(invocation.getArgument(0))); + Mockito.when(fusion.documents()).thenReturn(documents); + } + /** * Create new document without id. * From f2f44131752d95a31d7c0fe359eef0fe6b97ea3a Mon Sep 17 00:00:00 2001 From: Antal2 Date: Tue, 15 Feb 2022 10:28:54 +0100 Subject: [PATCH 2/2] Mimic existing behaviour when calling Fusion::documents from a test environment --- .../com/lucidworks/indexing/sdk/test/IndexStageTestBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java b/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java index 0897837..31607c5 100644 --- a/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java +++ b/index-stage-sdk-test/src/main/java/com/lucidworks/indexing/sdk/test/IndexStageTestBase.java @@ -44,8 +44,8 @@ public > S createStage(Class stageClass, C config) th private void mockDocumentsInFusion() { Documents documents = Mockito.mock(Documents.class); - Mockito.when(documents.newDocument()).thenReturn(new TestDocument(null)); - Mockito.when(documents.newDocument(any())).then(invocation -> new TestDocument(invocation.getArgument(0))); + Mockito.when(documents.newDocument()).then(invocation -> newDocument()); + Mockito.when(documents.newDocument(any())).then(invocation -> newDocument(invocation.getArgument(0))); Mockito.when(fusion.documents()).thenReturn(documents); }