From 0d536f7ed739ae6c2e31e5597f137e38c556132f Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 21 Mar 2023 23:33:35 +0100 Subject: [PATCH] =?UTF-8?q?Unittest=20f=C3=BCr=20DNPMHelper=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dieser Unittest prüft das aktuelle Verhalten der Methode `getSystemischeTherapienFromDiagnose()` --- src/main/java/DNPM/DNPMHelper.java | 36 +++----- .../de/itc/onkostar/library/moduleContext.xml | 4 +- src/test/java/DNPM/DNPMHelperTest.java | 91 +++++++++++++++++++ 3 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 src/test/java/DNPM/DNPMHelperTest.java diff --git a/src/main/java/DNPM/DNPMHelper.java b/src/main/java/DNPM/DNPMHelper.java index 8ec5a83..a086759 100644 --- a/src/main/java/DNPM/DNPMHelper.java +++ b/src/main/java/DNPM/DNPMHelper.java @@ -1,36 +1,30 @@ package DNPM; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import ATCCodes.AtcCode; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import de.itc.onkostar.api.Disease; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; +import de.itc.onkostar.api.Procedure; +import de.itc.onkostar.api.analysis.AnalyzerRequirement; +import de.itc.onkostar.api.analysis.IProcedureAnalyzer; +import de.itc.onkostar.api.analysis.OnkostarPluginType; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.transform.Transformers; import org.hibernate.type.StandardBasicTypes; -import org.springframework.beans.factory.annotation.Autowired; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.itc.onkostar.api.Disease; -import de.itc.onkostar.api.IOnkostarApi; -import de.itc.onkostar.api.Item; -import de.itc.onkostar.api.Procedure; - -import de.itc.onkostar.api.analysis.AnalyzerRequirement; -import de.itc.onkostar.api.analysis.IProcedureAnalyzer; -import de.itc.onkostar.api.analysis.OnkostarPluginType; +import java.util.*; public class DNPMHelper implements IProcedureAnalyzer{ - // Laden der API - @Autowired - private IOnkostarApi onkostarApi; + private final IOnkostarApi onkostarApi; + + public DNPMHelper(final IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } @Override public OnkostarPluginType getType() { diff --git a/src/main/resources/de/itc/onkostar/library/moduleContext.xml b/src/main/resources/de/itc/onkostar/library/moduleContext.xml index 40de642..48ea576 100644 --- a/src/main/resources/de/itc/onkostar/library/moduleContext.xml +++ b/src/main/resources/de/itc/onkostar/library/moduleContext.xml @@ -10,7 +10,9 @@ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> - + + + diff --git a/src/test/java/DNPM/DNPMHelperTest.java b/src/test/java/DNPM/DNPMHelperTest.java new file mode 100644 index 0000000..f5c8d03 --- /dev/null +++ b/src/test/java/DNPM/DNPMHelperTest.java @@ -0,0 +1,91 @@ +package DNPM; + +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.sql.Date; +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doAnswer; + +@ExtendWith(MockitoExtension.class) +public class DNPMHelperTest { + + private IOnkostarApi onkostarApi; + + private DNPMHelper dnpmHelper; + + @BeforeEach + void setup( + @Mock IOnkostarApi onkostarApi + ) { + this.onkostarApi = onkostarApi; + this.dnpmHelper = new DNPMHelper(onkostarApi); + } + + @Test + void testShouldReturnSystemischeTherapienFromDiagnose() { + doAnswer(invocationOnMock -> { + var procedure = new Procedure(onkostarApi); + procedure.setFormName("OS.Systemische Therapie"); + procedure.setValue("Beginn", new Item("Beginn", Date.from(Instant.parse("2023-01-01T00:00:00Z")))); + procedure.setValue("Ende", new Item("Ende", Date.from(Instant.parse("2023-01-31T00:00:00Z")))); + procedure.setValue("Beendigung", new Item("Beendigungsstatus", "E")); + procedure.setValue("Ergebnis", new Item("Ergebnis", "T")); + + var substanzen = new ArrayList<>(); + substanzen.add(Map.of( + "Substanz", "Testsubstanz", + "Substanz_shortDescription", "Testsubstanz" + )); + substanzen.add(Map.of( + "Substanz", "L01AA01", + "Substanz_shortDescription", "cyclophosphamide" + )); + + procedure.setValue("SubstanzenList", new Item("SubstanzenList", substanzen)); + + return List.of(procedure); + }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString()); + + var actual = dnpmHelper.getSystemischeTherapienFromDiagnose(Map.of("DiagnoseId", 1)); + + assertThat(actual).isNotNull(); + assertThat(actual).isExactlyInstanceOf(ArrayList.class); + + @SuppressWarnings("unchecked") + var actualList = (ArrayList>) actual; + assertThat(actualList).hasSize(1); + + assertThat(actualList.get(0).get("Beginn")) + .isEqualTo(Date.from(Instant.parse("2023-01-01T00:00:00Z")).toString()); + assertThat(actualList.get(0).get("Ende")) + .isEqualTo(Date.from(Instant.parse("2023-01-31T00:00:00Z")).toString()); + assertThat(actualList.get(0).get("Beendigung")) + .isEqualTo("E"); + assertThat(actualList.get(0).get("Ergebnis")) + .isEqualTo("T"); + assertThat(actualList.get(0).get("Wirkstoffe")) + .isEqualTo("Testsubstanz, cyclophosphamide"); + assertThat(actualList.get(0).get("WirkstoffCodes")) + .isEqualTo( + "[" + + "{\"system\":\"other\",\"code\":\"Testsubstanz\",\"substance\":\"Testsubstanz\"}," + + "{\"system\":\"ATC\",\"code\":\"L01AA01\",\"substance\":\"cyclophosphamide\"}" + + "]" + ); + } + +}