summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-06-27 11:31:08 +0200
committerPaul-Christian Volkmer2023-06-27 11:31:08 +0200
commitb1f281fa59fb595dad5f5928b997598559c0b8c1 (patch)
tree80713c6c8308ce895260a95c79e4b4281caecb8a
parent0dc733a75bbc365c1c2ec728c2ec975e4aa50e7f (diff)
Issue #4: Verschiebe Backend-Methode in EinzelempfehlungAnalyzer
-rw-r--r--src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java34
-rw-r--r--src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java36
-rw-r--r--src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java36
-rw-r--r--src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java34
4 files changed, 71 insertions, 69 deletions
diff --git a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
index 6f38bdb..dfe9d22 100644
--- a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
@@ -1,8 +1,10 @@
package DNPM.analyzer;
+import DNPM.dto.Studie;
import DNPM.dto.Variant;
import DNPM.security.PermissionType;
import DNPM.security.PersonPoolBasedPermissionEvaluator;
+import DNPM.services.StudienService;
import DNPM.services.molekulargenetik.MolekulargenetikFormService;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
@@ -32,14 +34,18 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
private final MolekulargenetikFormService molekulargenetikFormService;
+ private final StudienService studienService;
+
private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
public EinzelempfehlungAnalyzer(
final IOnkostarApi onkostarApi,
+ final StudienService studienService,
final MolekulargenetikFormService molekulargenetikFormService,
final PersonPoolBasedPermissionEvaluator permissionEvaluator
) {
this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
this.molekulargenetikFormService = molekulargenetikFormService;
this.permissionEvaluator = permissionEvaluator;
}
@@ -112,4 +118,32 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
}
}
+ /**
+ * Übergibt alle Studien, deren (Kurz-)Beschreibung oder NCT-Nummer den übergebenen Eingabewert <code>q</code> enthält
+ *
+ * <p>Wurde der Eingabewert nicht angegeben oder ist leer, werden alle Studien übergeben.
+ *
+ * <p>Beispiel zur Nutzung in einem Formularscript
+ * <pre>
+ * executePluginMethod(
+ * 'TherapieplanAnalyzer',
+ * 'getStudien',
+ * { q: 'NCT-12' },
+ * (response) => console.log(response),
+ * false
+ * );
+ * </pre>
+ *
+ * @param input Map mit Eingabewerten
+ * @return Liste mit Studien
+ */
+ public List<Studie> getStudien(Map<String, Object> input) {
+ var query = AnalyzerUtils.getRequiredValue(input, "q", String.class);
+
+ if (query.isEmpty() || query.get().isBlank()) {
+ return studienService.findAll();
+ }
+ return studienService.findByQuery(query.get());
+ }
+
}
diff --git a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
index aef635b..6561da4 100644
--- a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java
@@ -1,9 +1,7 @@
package DNPM.analyzer;
-import DNPM.dto.Studie;
import DNPM.security.DelegatingDataBasedPermissionEvaluator;
import DNPM.security.PermissionType;
-import DNPM.services.StudienService;
import DNPM.services.mtb.MtbService;
import DNPM.services.therapieplan.TherapieplanServiceFactory;
import de.itc.onkostar.api.Disease;
@@ -15,7 +13,6 @@ import de.itc.onkostar.api.analysis.OnkostarPluginType;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -27,8 +24,6 @@ import java.util.Set;
@Component
public class TherapieplanAnalyzer implements IProcedureAnalyzer {
- private final StudienService studienService;
-
private final TherapieplanServiceFactory therapieplanServiceFactory;
private final MtbService mtbService;
@@ -36,12 +31,10 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
private final DelegatingDataBasedPermissionEvaluator permissionEvaluator;
public TherapieplanAnalyzer(
- final StudienService studienService,
final TherapieplanServiceFactory therapieplanServiceFactory,
final MtbService mtbService,
final DelegatingDataBasedPermissionEvaluator permissionEvaluator
) {
- this.studienService = studienService;
this.therapieplanServiceFactory = therapieplanServiceFactory;
this.mtbService = mtbService;
this.permissionEvaluator = permissionEvaluator;
@@ -104,35 +97,6 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
therapieplanServiceFactory.currentUsableInstance().updateRequiredMtbEntries(procedure);
}
-
- /**
- * Übergibt alle Studien, deren (Kurz-)Beschreibung oder NCT-Nummer den übergebenen Eingabewert <code>q</code> enthält
- *
- * <p>Wurde der Eingabewert nicht angegeben oder ist leer, werden alle Studien übergeben.
- *
- * <p>Beispiel zur Nutzung in einem Formularscript
- * <pre>
- * executePluginMethod(
- * 'TherapieplanAnalyzer',
- * 'getStudien',
- * { q: 'NCT-12' },
- * (response) => console.log(response),
- * false
- * );
- * </pre>
- *
- * @param input Map mit Eingabewerten
- * @return Liste mit Studien
- */
- public List<Studie> getStudien(Map<String, Object> input) {
- var query = AnalyzerUtils.getRequiredValue(input, "q", String.class);
-
- if (query.isEmpty() || query.get().isBlank()) {
- return studienService.findAll();
- }
- return studienService.findByQuery(query.get());
- }
-
/**
* Übergibt den Text der referenzierten MTBs für den Protokollauszug
*
diff --git a/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java b/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
index f72159d..8812442 100644
--- a/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
+++ b/src/test/java/DNPM/analyzer/EinzelempfehlungAnalyzerTest.java
@@ -2,17 +2,21 @@ package DNPM.analyzer;
import DNPM.security.PermissionType;
import DNPM.security.PersonPoolBasedPermissionEvaluator;
+import DNPM.services.StudienService;
import DNPM.services.molekulargenetik.MolekulargenetikFormService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
+import java.util.HashMap;
import java.util.Map;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@@ -21,6 +25,8 @@ class EinzelempfehlungAnalyzerTest {
private IOnkostarApi onkostarApi;
+ private StudienService studienService;
+
private MolekulargenetikFormService molekulargenetikFormService;
private PersonPoolBasedPermissionEvaluator permissionEvaluator;
@@ -30,13 +36,15 @@ class EinzelempfehlungAnalyzerTest {
@BeforeEach
void setup(
@Mock IOnkostarApi onkostarApi,
+ @Mock StudienService studienService,
@Mock MolekulargenetikFormService molekulargenetikFormService,
@Mock PersonPoolBasedPermissionEvaluator permissionEvaluator
) {
this.onkostarApi = onkostarApi;
+ this.studienService = studienService;
this.molekulargenetikFormService = molekulargenetikFormService;
this.permissionEvaluator = permissionEvaluator;
- this.analyzer = new EinzelempfehlungAnalyzer(onkostarApi, molekulargenetikFormService, permissionEvaluator);
+ this.analyzer = new EinzelempfehlungAnalyzer(onkostarApi, studienService, molekulargenetikFormService, permissionEvaluator);
}
@Test
@@ -49,4 +57,30 @@ class EinzelempfehlungAnalyzerTest {
verify(molekulargenetikFormService, times(1)).getVariants(any(Procedure.class));
}
+ @Test
+ void shouldRequestAllStudienForEmptyQueryString() {
+ var input = Map.of("q", (Object) " ");
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findAll();
+ }
+
+ @Test
+ void shouldRequestAllStudienForEmptyInputMap() {
+ var input = new HashMap<String, Object>();
+ this.analyzer.getStudien(input);
+
+ verify(studienService, times(1)).findAll();
+ }
+
+ @Test
+ void shouldRequestFilteredStudien() {
+ var input = Map.of("q", (Object) "NCT-123");
+ this.analyzer.getStudien(input);
+
+ var captor = ArgumentCaptor.forClass(String.class);
+ verify(studienService, times(1)).findByQuery(captor.capture());
+ assertThat(captor.getValue()).isEqualTo("NCT-123");
+ }
+
}
diff --git a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
index ffd886b..cd5aee1 100644
--- a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
+++ b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java
@@ -2,7 +2,7 @@ package DNPM.analyzer;
import DNPM.security.DelegatingDataBasedPermissionEvaluator;
import DNPM.security.PermissionType;
-import DNPM.services.*;
+import DNPM.services.FormService;
import DNPM.services.mtb.MtbService;
import DNPM.services.therapieplan.MultipleMtbTherapieplanService;
import DNPM.services.therapieplan.TherapieplanService;
@@ -17,7 +17,6 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -34,9 +33,6 @@ class TherapieplanAnalyzerTest {
private FormService formService;
@Mock
- private StudienService studienService;
-
- @Mock
private TherapieplanServiceFactory therapieplanServiceFactory;
@Mock
@@ -52,7 +48,7 @@ class TherapieplanAnalyzerTest {
@BeforeEach
void setUp() {
- this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory, mtbService, permissionEvaluator);
+ this.therapieplanAnalyzer = new TherapieplanAnalyzer(therapieplanServiceFactory, mtbService, permissionEvaluator);
}
@Test
@@ -66,32 +62,6 @@ class TherapieplanAnalyzerTest {
}
@Test
- void shouldRequestAllStudienForEmptyQueryString() {
- var input = Map.of("q", (Object) " ");
- this.therapieplanAnalyzer.getStudien(input);
-
- verify(studienService, times(1)).findAll();
- }
-
- @Test
- void shouldRequestAllStudienForEmptyInputMap() {
- var input = new HashMap<String, Object>();
- this.therapieplanAnalyzer.getStudien(input);
-
- verify(studienService, times(1)).findAll();
- }
-
- @Test
- void shouldRequestFilteredStudien() {
- var input = Map.of("q", (Object) "NCT-123");
- this.therapieplanAnalyzer.getStudien(input);
-
- var captor = ArgumentCaptor.forClass(String.class);
- verify(studienService, times(1)).findByQuery(captor.capture());
- assertThat(captor.getValue()).isEqualTo("NCT-123");
- }
-
- @Test
void shouldRequestProtokollauszug() {
doAnswer(invocationOnMock -> {
var procedure = new Procedure(onkostarApi);