diff --git a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java index 29441cf..fe2f0d7 100644 --- a/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java +++ b/src/main/java/DNPM/analyzer/TherapieplanAnalyzer.java @@ -2,7 +2,7 @@ package DNPM.analyzer; import DNPM.services.Studie; import DNPM.services.StudienService; -import DNPM.services.TherapieplanService; +import DNPM.services.TherapieplanServiceFactory; import de.itc.onkostar.api.Disease; import de.itc.onkostar.api.Procedure; import de.itc.onkostar.api.analysis.AnalyseTriggerEvent; @@ -25,14 +25,14 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer { private final StudienService studienService; - private final TherapieplanService therapieplanService; + private final TherapieplanServiceFactory therapieplanServiceFactory; public TherapieplanAnalyzer( final StudienService studienService, - final TherapieplanService therapieplanService + final TherapieplanServiceFactory therapieplanServiceFactory ) { this.studienService = studienService; - this.therapieplanService = therapieplanService; + this.therapieplanServiceFactory = therapieplanServiceFactory; } @Override @@ -89,7 +89,7 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer { @Override public void analyze(Procedure procedure, Disease disease) { - therapieplanService.updateRequiredMtbEntries(procedure); + therapieplanServiceFactory.currentUsableinstance().updateRequiredMtbEntries(procedure); } @@ -108,6 +108,7 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer { * false * ); * + * * @param input Map mit Eingabewerten */ public List getStudien(Map input) { diff --git a/src/main/java/DNPM/config/PluginConfiguration.java b/src/main/java/DNPM/config/PluginConfiguration.java index d417132..36b1875 100644 --- a/src/main/java/DNPM/config/PluginConfiguration.java +++ b/src/main/java/DNPM/config/PluginConfiguration.java @@ -28,15 +28,8 @@ public class PluginConfiguration { } @Bean - public TherapieplanService therapieplanService(final IOnkostarApi onkostarApi, final FormService formService) { - if ( - null != onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode") - && onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true") - ) { - return new MultipleMtbTherapieplanService(); - } - - return new DefaultTherapieplanService(onkostarApi, formService); + public TherapieplanServiceFactory therapieplanServiceFactory(final IOnkostarApi onkostarApi, final FormService formService) { + return new TherapieplanServiceFactory(onkostarApi, formService); } } diff --git a/src/main/java/DNPM/services/TherapieplanServiceFactory.java b/src/main/java/DNPM/services/TherapieplanServiceFactory.java new file mode 100644 index 0000000..a6e869c --- /dev/null +++ b/src/main/java/DNPM/services/TherapieplanServiceFactory.java @@ -0,0 +1,27 @@ +package DNPM.services; + +import de.itc.onkostar.api.IOnkostarApi; + +public class TherapieplanServiceFactory { + + private final IOnkostarApi onkostarApi; + + private final FormService formService; + + public TherapieplanServiceFactory(IOnkostarApi onkostarApi, FormService formService) { + this.onkostarApi = onkostarApi; + this.formService = formService; + } + + public TherapieplanService currentUsableinstance() { + if ( + null != onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode") + && onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true") + ) { + return new MultipleMtbTherapieplanService(); + } + + return new DefaultTherapieplanService(onkostarApi, formService); + } + +} diff --git a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java index 6196437..7a4e842 100644 --- a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java +++ b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java @@ -1,7 +1,8 @@ package DNPM.analyzer; +import DNPM.services.MultipleMtbTherapieplanService; import DNPM.services.StudienService; -import DNPM.services.TherapieplanService; +import DNPM.services.TherapieplanServiceFactory; import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Procedure; import org.junit.jupiter.api.BeforeEach; @@ -15,9 +16,7 @@ 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.times; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) public class TherapieplanAnalyzerTest { @@ -29,25 +28,27 @@ public class TherapieplanAnalyzerTest { private StudienService studienService; @Mock - private TherapieplanService therapieplanService; + private TherapieplanServiceFactory therapieplanServiceFactory; private TherapieplanAnalyzer therapieplanAnalyzer; @BeforeEach void setUp() { - this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanService); + this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory); } @Test void shouldRunServiceMethodsOnAnalyzeCalled() { + when(this.therapieplanServiceFactory.currentUsableinstance()).thenReturn(new MultipleMtbTherapieplanService()); + this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null); - verify(this.therapieplanService, times(1)).updateRequiredMtbEntries(any(Procedure.class)); + verify(this.therapieplanServiceFactory, times(1)).currentUsableinstance(); } @Test void shouldRequestAllStudienForEmptyQueryString() { - var input = Map.of("q", (Object)" "); + var input = Map.of("q", (Object) " "); this.therapieplanAnalyzer.getStudien(input); verify(studienService, times(1)).findAll(); @@ -63,7 +64,7 @@ public class TherapieplanAnalyzerTest { @Test void shouldRequestFilteredStudien() { - var input = Map.of("q", (Object)"NCT-123"); + var input = Map.of("q", (Object) "NCT-123"); this.therapieplanAnalyzer.getStudien(input); var captor = ArgumentCaptor.forClass(String.class); diff --git a/src/test/java/DNPM/config/PluginConfigurationTest.java b/src/test/java/DNPM/config/PluginConfigurationTest.java index 811e583..77c95e7 100644 --- a/src/test/java/DNPM/config/PluginConfigurationTest.java +++ b/src/test/java/DNPM/config/PluginConfigurationTest.java @@ -1,8 +1,7 @@ package DNPM.config; -import DNPM.services.DefaultTherapieplanService; import DNPM.services.FormService; -import DNPM.services.MultipleMtbTherapieplanService; +import DNPM.services.TherapieplanServiceFactory; import de.itc.onkostar.api.IOnkostarApi; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -11,9 +10,6 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class PluginConfigurationTest { @@ -32,41 +28,8 @@ public class PluginConfigurationTest { } @Test - void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() { - doAnswer(invocationOnMock -> { - var settingName = invocationOnMock.getArgument(0, String.class); - if (settingName.equals("mehrere_mtb_in_mtbepisode")) { - return "false"; - } - return null; - }).when(onkostarApi).getGlobalSetting(anyString()); - - var actual = this.configuration.therapieplanService(onkostarApi, formService); - - assertThat(actual).isInstanceOf(DefaultTherapieplanService.class); - } - - @Test - void testShouldReturnDefaultTherapieplanServiceIfNoSetting() { - when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null); - - var actual = this.configuration.therapieplanService(onkostarApi, formService); - - assertThat(actual).isInstanceOf(DefaultTherapieplanService.class); - } - - @Test - void testShouldReturnMultipleMtbTherapieplanServiceIfSettingIsTrue() { - doAnswer(invocationOnMock -> { - var settingName = invocationOnMock.getArgument(0, String.class); - if (settingName.equals("mehrere_mtb_in_mtbepisode")) { - return "true"; - } - return null; - }).when(onkostarApi).getGlobalSetting(anyString()); - - var actual = this.configuration.therapieplanService(onkostarApi, formService); - - assertThat(actual).isInstanceOf(MultipleMtbTherapieplanService.class); + void testShouldReturnTherapieplanServiceFactory() { + var actual = this.configuration.therapieplanServiceFactory(onkostarApi, formService); + assertThat(actual).isInstanceOf(TherapieplanServiceFactory.class); } } diff --git a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java new file mode 100644 index 0000000..5868750 --- /dev/null +++ b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java @@ -0,0 +1,73 @@ +package DNPM.config; + +import DNPM.services.DefaultTherapieplanService; +import DNPM.services.FormService; +import DNPM.services.MultipleMtbTherapieplanService; +import DNPM.services.TherapieplanServiceFactory; +import de.itc.onkostar.api.IOnkostarApi; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class TherapieplanServiceFactoryTest { + + @Mock + private IOnkostarApi onkostarApi; + + @Mock + private FormService formService; + + private TherapieplanServiceFactory therapieplanServiceFactory; + + @BeforeEach + void setup() { + this.therapieplanServiceFactory = new TherapieplanServiceFactory(onkostarApi, formService); + } + + @Test + void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() { + doAnswer(invocationOnMock -> { + var settingName = invocationOnMock.getArgument(0, String.class); + if (settingName.equals("mehrere_mtb_in_mtbepisode")) { + return "false"; + } + return null; + }).when(onkostarApi).getGlobalSetting(anyString()); + + var actual = this.therapieplanServiceFactory.currentUsableinstance(); + + assertThat(actual).isInstanceOf(DefaultTherapieplanService.class); + } + + @Test + void testShouldReturnDefaultTherapieplanServiceIfNoSetting() { + when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null); + + var actual = this.therapieplanServiceFactory.currentUsableinstance(); + + assertThat(actual).isInstanceOf(DefaultTherapieplanService.class); + } + + @Test + void testShouldReturnMultipleMtbTherapieplanServiceIfSettingIsTrue() { + doAnswer(invocationOnMock -> { + var settingName = invocationOnMock.getArgument(0, String.class); + if (settingName.equals("mehrere_mtb_in_mtbepisode")) { + return "true"; + } + return null; + }).when(onkostarApi).getGlobalSetting(anyString()); + + var actual = this.therapieplanServiceFactory.currentUsableinstance(); + + assertThat(actual).isInstanceOf(MultipleMtbTherapieplanService.class); + } +}