mirror of
https://github.com/pcvolkmer/onkostar-plugin-dnpm.git
synced 2025-07-04 18:12:55 +00:00
Verwende Spring Configuration zur Pluginkonfiguration
Dies erlaubt eine dynamische Konfiguration der zu verwendenden Service-Implementierungen mit Anpassungen je nach Standort oder Einstellungen.
This commit is contained in:
@ -1,11 +1,9 @@
|
||||
package DNPM.analyzer;
|
||||
|
||||
import DNPM.services.FormService;
|
||||
import DNPM.services.StudienService;
|
||||
import DNPM.services.TherapieplanService;
|
||||
import de.itc.onkostar.api.IOnkostarApi;
|
||||
import de.itc.onkostar.api.Item;
|
||||
import de.itc.onkostar.api.Procedure;
|
||||
import de.itc.onkostar.api.constants.JaNeinUnbekannt;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@ -13,14 +11,13 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class TherapieplanAnalyzerTest {
|
||||
@ -29,99 +26,23 @@ public class TherapieplanAnalyzerTest {
|
||||
private IOnkostarApi onkostarApi;
|
||||
|
||||
@Mock
|
||||
private FormService formService;
|
||||
private StudienService studienService;
|
||||
|
||||
@Mock
|
||||
private StudienService studienService;
|
||||
private TherapieplanService therapieplanService;
|
||||
|
||||
private TherapieplanAnalyzer therapieplanAnalyzer;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
this.therapieplanAnalyzer = new TherapieplanAnalyzer(onkostarApi, formService, studienService);
|
||||
this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanService);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotUpdateSubformsOrSectionsIfMultipleMtbConfiguration() throws Exception {
|
||||
doAnswer(invocationOnMock -> {
|
||||
var settingName = invocationOnMock.getArgument(0, String.class);
|
||||
if (settingName.equals("mehrere_mtb_in_mtbepisode")) {
|
||||
return "true";
|
||||
}
|
||||
return null;
|
||||
}).when(onkostarApi).getGlobalSetting(anyString());
|
||||
|
||||
void shouldRunServiceMethodsOnAnalyzeCalled() {
|
||||
this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
|
||||
|
||||
verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotUpdateSectionsIfSectionsNotEnabled() throws Exception {
|
||||
when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null);
|
||||
|
||||
var testProcedure = baseProcedure(onkostarApi);
|
||||
|
||||
// Keine humangenetische Beratung und keine Reevaluation empfohlen
|
||||
testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
|
||||
testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
|
||||
|
||||
this.therapieplanAnalyzer.analyze(testProcedure, null);
|
||||
|
||||
verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldUpdateSectionsIfNoReevaluation() throws Exception {
|
||||
when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null);
|
||||
|
||||
var testProcedure = baseProcedure(onkostarApi);
|
||||
|
||||
// Humangenetische Beratung aber keine Reevaluation
|
||||
testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.JA.getCode()));
|
||||
testProcedure.setValue("humangenberbegruendung", new Item("humangen_ber_begruendung", "Das ist die Begründung"));
|
||||
testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN.getCode()));
|
||||
|
||||
this.therapieplanAnalyzer.analyze(testProcedure, null);
|
||||
|
||||
var captor = ArgumentCaptor.forClass(Procedure.class);
|
||||
verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
|
||||
|
||||
var capturedProcedure = captor.getValue();
|
||||
|
||||
assertThat(capturedProcedure.getValue("reftkreevaluation")).isNull();
|
||||
assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNull();
|
||||
|
||||
assertThat(capturedProcedure.getValue("reftkhumangenber")).isNotNull();
|
||||
assertThat(capturedProcedure.getValue("reftkhumangenber").getInt()).isEqualTo(procedureId);
|
||||
assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNotNull();
|
||||
assertThat(capturedProcedure.getValue("datumtkhumangenber").getDate()).isEqualTo(testDate);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldUpdateSectionsIfNoHumanGenConsultation() throws Exception {
|
||||
when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null);
|
||||
|
||||
var testProcedure = baseProcedure(onkostarApi);
|
||||
|
||||
// Humangenetische Beratung aber keine Reevaluation
|
||||
testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN.getCode()));
|
||||
testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.JA.getCode()));
|
||||
|
||||
this.therapieplanAnalyzer.analyze(testProcedure, null);
|
||||
|
||||
var captor = ArgumentCaptor.forClass(Procedure.class);
|
||||
verify(onkostarApi, times(1)).saveProcedure(captor.capture(), anyBoolean());
|
||||
|
||||
var capturedProcedure = captor.getValue();
|
||||
|
||||
assertThat(capturedProcedure.getValue("reftkhumangenber")).isNull();
|
||||
assertThat(capturedProcedure.getValue("datumtkhumangenber")).isNull();
|
||||
|
||||
assertThat(capturedProcedure.getValue("reftkreevaluation")).isNotNull();
|
||||
assertThat(capturedProcedure.getValue("reftkreevaluation").getInt()).isEqualTo(procedureId);
|
||||
assertThat(capturedProcedure.getValue("datumtkreevaluation")).isNotNull();
|
||||
assertThat(capturedProcedure.getValue("datumtkreevaluation").getDate()).isEqualTo(testDate);
|
||||
verify(this.therapieplanService, times(1)).updateRequiredMtbEntries(any(Procedure.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -150,19 +71,4 @@ public class TherapieplanAnalyzerTest {
|
||||
assertThat(captor.getValue()).isEqualTo("NCT-123");
|
||||
}
|
||||
|
||||
|
||||
private static final int procedureId = 1234;
|
||||
private static final Date testDate = Date.from(Instant.parse("2023-03-15T09:43:00Z"));
|
||||
|
||||
private Procedure baseProcedure(final IOnkostarApi onkostarApi) {
|
||||
var testProcedure = new Procedure(onkostarApi);
|
||||
testProcedure.setId(1000);
|
||||
|
||||
// Setzen MTB Referenz und Datum MTB
|
||||
testProcedure.setValue("referstemtb", new Item("ref_tumorkonferenz", procedureId));
|
||||
testProcedure.setValue("datum", new Item("datum", testDate));
|
||||
|
||||
return testProcedure;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user