From ef5c91a352788a2ad84afa18fa0c7cdadec70ed8 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 20 Mar 2023 14:07:00 +0100 Subject: Issue #11: Service und Spring Data JPA Repository für Systemeinstellungen --- .../java/DNPM/config/PluginConfigurationTest.java | 6 ++- .../config/TherapieplanServiceFactoryTest.java | 36 +++----------- .../java/DNPM/services/SettingsServiceTest.java | 58 ++++++++++++++++++++++ 3 files changed, 70 insertions(+), 30 deletions(-) create mode 100644 src/test/java/DNPM/services/SettingsServiceTest.java (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/config/PluginConfigurationTest.java b/src/test/java/DNPM/config/PluginConfigurationTest.java index 77c95e7..d94b3c7 100644 --- a/src/test/java/DNPM/config/PluginConfigurationTest.java +++ b/src/test/java/DNPM/config/PluginConfigurationTest.java @@ -1,6 +1,7 @@ package DNPM.config; import DNPM.services.FormService; +import DNPM.services.SettingsService; import DNPM.services.TherapieplanServiceFactory; import de.itc.onkostar.api.IOnkostarApi; import org.junit.jupiter.api.BeforeEach; @@ -17,6 +18,9 @@ public class PluginConfigurationTest { @Mock private IOnkostarApi onkostarApi; + @Mock + private SettingsService settingsService; + @Mock private FormService formService; @@ -29,7 +33,7 @@ public class PluginConfigurationTest { @Test void testShouldReturnTherapieplanServiceFactory() { - var actual = this.configuration.therapieplanServiceFactory(onkostarApi, formService); + var actual = this.configuration.therapieplanServiceFactory(onkostarApi, settingsService, formService); assertThat(actual).isInstanceOf(TherapieplanServiceFactory.class); } } diff --git a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java index f974dcf..2f0022d 100644 --- a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java +++ b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java @@ -1,9 +1,6 @@ package DNPM.config; -import DNPM.services.DefaultTherapieplanService; -import DNPM.services.FormService; -import DNPM.services.MultipleMtbTherapieplanService; -import DNPM.services.TherapieplanServiceFactory; +import DNPM.services.*; import de.itc.onkostar.api.IOnkostarApi; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -12,8 +9,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) @@ -25,32 +20,21 @@ public class TherapieplanServiceFactoryTest { @Mock private FormService formService; + @Mock + private SettingsService settingsService; + private TherapieplanServiceFactory therapieplanServiceFactory; @BeforeEach void setup() { - this.therapieplanServiceFactory = new TherapieplanServiceFactory(onkostarApi, formService); + this.therapieplanServiceFactory = new TherapieplanServiceFactory(onkostarApi, settingsService, 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()); - + when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false); 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); @@ -58,13 +42,7 @@ public class TherapieplanServiceFactoryTest { @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()); + when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(true); var actual = this.therapieplanServiceFactory.currentUsableInstance(); diff --git a/src/test/java/DNPM/services/SettingsServiceTest.java b/src/test/java/DNPM/services/SettingsServiceTest.java new file mode 100644 index 0000000..65e3f6d --- /dev/null +++ b/src/test/java/DNPM/services/SettingsServiceTest.java @@ -0,0 +1,58 @@ +package DNPM.services; + +import DNPM.database.SettingsRepository; +import de.itc.db.dnpm.Setting; +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.Mockito.anyString; +import static org.mockito.Mockito.doAnswer; + +@ExtendWith(MockitoExtension.class) +public class SettingsServiceTest { + + @Mock + private SettingsRepository settingsRepository; + + private SettingsService service; + + @BeforeEach + void setUp() { + this.service = new SettingsService(settingsRepository); + } + + @Test + void shouldReturnSID() { + doAnswer(invocationOnMock -> { + var name = invocationOnMock.getArgument(0, String.class); + if (null != name && name.equals("SID")) { + return new Setting(1L, "SID", "12345"); + } + return null; + }).when(settingsRepository).findByName(anyString()); + + var actual = service.getSID(); + assertThat(actual).isPresent(); + assertThat(actual.get()).isEqualTo("12345"); + } + + @Test + void shouldReturnSIDByName() { + doAnswer(invocationOnMock -> { + var name = invocationOnMock.getArgument(0, String.class); + if (null != name && name.equals("SID")) { + return new Setting(1L, "SID", "12345"); + } + return null; + }).when(settingsRepository).findByName(anyString()); + + var actual = service.getSetting("SID"); + assertThat(actual).isPresent(); + assertThat(actual.get()).isEqualTo("12345"); + } + +} -- cgit v1.2.3 From 887221d5aec7fbe32a86b705b33aa4b5d2fa7062 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 20 Mar 2023 16:43:07 +0100 Subject: Issue #11: Service zum Generieren des Protokollauszugs aus MTBs Implementierungen vorhanden für die Formulare: * OS.Tumorkonferenz * OS.Tumorkonferenz.VarianteUKW --- .../DNPM/services/mtb/DefaultMtbServiceTest.java | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java b/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java new file mode 100644 index 0000000..6230edd --- /dev/null +++ b/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java @@ -0,0 +1,110 @@ +package DNPM.services.mtb; + +import DNPM.services.SettingsService; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; +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.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.Instant; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class DefaultMtbServiceTest { + + @Mock + private IOnkostarApi onkostarApi; + + @Mock + private SettingsService settingsService; + + private DefaultMtbService service; + + @BeforeEach + void setup() { + this.service = new DefaultMtbService(settingsService); + } + + @Test + void testShouldReturnMtbProtocolForDefaultImplementation() { + + when(settingsService.getSID()).thenReturn(Optional.of("12345")); + when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false); + + var procedure1 = new Procedure(onkostarApi); + procedure1.setFormName("OS.Tumorkonferenz"); + procedure1.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z"))); + procedure1.setValue("Fragestellung", new Item("Fragestellung", "Test ok?")); + procedure1.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!")); + + var procedures = List.of( + procedure1 + ); + + var actual = service.getProtocol(procedures); + + assertThat(actual).isEqualTo("Test ok?\nRerun Test if not ok!"); + } + + @Test + void testShouldReturnEmptyMtbProtocolForMultipleMtb() { + + when(settingsService.getSID()).thenReturn(Optional.of("12345")); + when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(true); + + var procedure1 = new Procedure(onkostarApi); + procedure1.setFormName("OS.Tumorkonferenz"); + procedure1.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z"))); + procedure1.setValue("Fragestellung", new Item("Fragestellung", "Test ok?")); + procedure1.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!")); + + var procedures = List.of( + procedure1 + ); + + var actual = service.getProtocol(procedures); + + assertThat(actual).isEmpty(); + } + + @Test + void testShouldReturnMtbProtocolForSID20119() { + when(settingsService.getSID()).thenReturn(Optional.of("20119")); + when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(true); + + var procedure1 = new Procedure(onkostarApi); + procedure1.setFormName("OS.Tumorkonferenz.VarianteUKW"); + procedure1.setStartDate(Date.from(Instant.parse("2023-02-01T00:00:00Z"))); + procedure1.setValue("Fragestellung", new Item("Fragestellung", "Test immer noch ok?")); + procedure1.setValue("Empfehlung", new Item("Empfehlung", "Do not rerun Test if ok!")); + + var procedure2 = new Procedure(onkostarApi); + procedure2.setFormName("OS.Tumorkonferenz.VarianteUKW"); + procedure2.setStartDate(Date.from(Instant.parse("2023-01-01T00:00:00Z"))); + procedure2.setValue("Fragestellung", new Item("Fragestellung", "Test ok?")); + procedure2.setValue("Empfehlung", new Item("Empfehlung", "Rerun Test if not ok!")); + + + var procedures = Arrays.asList( + procedure1, + procedure2 + ); + + var actual = service.getProtocol(procedures); + + assertThat(actual).isEqualTo( + "Test ok?\nRerun Test if not ok!\nTest immer noch ok?\nDo not rerun Test if ok!" + ); + } + +} -- cgit v1.2.3 From 9809fd550f5ddd394081529318db6a5001b54bac Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 20 Mar 2023 22:18:37 +0100 Subject: Issue #11: Verwende Überschrift für Fragestellung und Empfehlung --- .../java/DNPM/services/mtb/DefaultMtbServiceTest.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java b/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java index 6230edd..073f25c 100644 --- a/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java +++ b/src/test/java/DNPM/services/mtb/DefaultMtbServiceTest.java @@ -22,22 +22,24 @@ import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class DefaultMtbServiceTest { - @Mock private IOnkostarApi onkostarApi; - @Mock private SettingsService settingsService; private DefaultMtbService service; @BeforeEach - void setup() { + void setup( + @Mock IOnkostarApi onkostarApi, + @Mock SettingsService settingsService + ) { + this.onkostarApi = onkostarApi; + this.settingsService = settingsService; this.service = new DefaultMtbService(settingsService); } @Test void testShouldReturnMtbProtocolForDefaultImplementation() { - when(settingsService.getSID()).thenReturn(Optional.of("12345")); when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false); @@ -53,12 +55,11 @@ public class DefaultMtbServiceTest { var actual = service.getProtocol(procedures); - assertThat(actual).isEqualTo("Test ok?\nRerun Test if not ok!"); + assertThat(actual).isEqualTo("Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!"); } @Test void testShouldReturnEmptyMtbProtocolForMultipleMtb() { - when(settingsService.getSID()).thenReturn(Optional.of("12345")); when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(true); @@ -103,7 +104,8 @@ public class DefaultMtbServiceTest { var actual = service.getProtocol(procedures); assertThat(actual).isEqualTo( - "Test ok?\nRerun Test if not ok!\nTest immer noch ok?\nDo not rerun Test if ok!" + "Fragestellung:\nTest ok?\n\nEmpfehlung:\nRerun Test if not ok!\n\n" + + "Fragestellung:\nTest immer noch ok?\n\nEmpfehlung:\nDo not rerun Test if ok!" ); } -- cgit v1.2.3 From aad777b5e36238ef437210bd9ad3ea51c3274a45 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 20 Mar 2023 22:19:20 +0100 Subject: Issue #11: Backend-Service-Methode zum Abrufen des Protokollauszugs hinzugefügt --- .../DNPM/analyzer/TherapieplanAnalyzerTest.java | 40 +++++++++++++++++++--- .../config/TherapieplanServiceFactoryTest.java | 1 - 2 files changed, 35 insertions(+), 6 deletions(-) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java index 5c39212..fe3d824 100644 --- a/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java +++ b/src/test/java/DNPM/analyzer/TherapieplanAnalyzerTest.java @@ -1,9 +1,9 @@ package DNPM.analyzer; -import DNPM.services.MultipleMtbTherapieplanService; -import DNPM.services.StudienService; -import DNPM.services.TherapieplanServiceFactory; +import DNPM.services.*; +import DNPM.services.mtb.MtbService; import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; import de.itc.onkostar.api.Procedure; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -13,6 +13,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.util.HashMap; +import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -24,22 +25,32 @@ public class TherapieplanAnalyzerTest { @Mock private IOnkostarApi onkostarApi; + @Mock + private FormService formService; + @Mock private StudienService studienService; @Mock private TherapieplanServiceFactory therapieplanServiceFactory; + @Mock + private TherapieplanService therapieplanService; + + @Mock + private MtbService mtbService; + private TherapieplanAnalyzer therapieplanAnalyzer; @BeforeEach void setUp() { - this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory); + this.therapieplanAnalyzer = new TherapieplanAnalyzer(studienService, therapieplanServiceFactory, mtbService); } @Test void shouldRunServiceMethodsOnAnalyzeCalled() { - when(this.therapieplanServiceFactory.currentUsableInstance()).thenReturn(new MultipleMtbTherapieplanService()); + when(this.therapieplanServiceFactory.currentUsableInstance()) + .thenReturn(new MultipleMtbTherapieplanService(onkostarApi, formService)); this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null); @@ -72,4 +83,23 @@ public class TherapieplanAnalyzerTest { assertThat(captor.getValue()).isEqualTo("NCT-123"); } + @Test + void shouldRequestProtokollauszug() { + doAnswer(invocationOnMock -> { + var procedure = new Procedure(onkostarApi); + procedure.setValue("referstemtb", new Item("referstemtb", 2345)); + return List.of(procedure); + }).when(this.therapieplanService).findReferencedMtbs(anyInt()); + + when(this.therapieplanServiceFactory.currentUsableInstance()) + .thenReturn(therapieplanService); + + var input = Map.of("id", (Object) 1234); + this.therapieplanAnalyzer.getProtokollauszug(input); + + var captor = ArgumentCaptor.forClass(List.class); + verify(mtbService, times(1)).getProtocol(captor.capture()); + assertThat(captor.getValue()).hasSize(1); + } + } diff --git a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java index 2f0022d..ea9ff42 100644 --- a/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java +++ b/src/test/java/DNPM/config/TherapieplanServiceFactoryTest.java @@ -33,7 +33,6 @@ public class TherapieplanServiceFactoryTest { @Test void testShouldReturnDefaultTherapieplanServiceIfSettingIsFalse() { when(settingsService.multipleMtbsInMtbEpisode()).thenReturn(false); - var actual = this.therapieplanServiceFactory.currentUsableInstance(); var actual = this.therapieplanServiceFactory.currentUsableInstance(); -- cgit v1.2.3