From 2f691efeb352770a507606773454f15378e494d3 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 30 Mar 2023 11:38:15 +0200 Subject: [PATCH] Verwende AnalyzerUtils in Klasse Merkmalskatalog --- src/main/java/DNPM/Merkmalskatalog.java | 21 +++--- .../de/itc/onkostar/library/moduleContext.xml | 4 +- src/test/java/DNPM/MerkmalskatalogTest.java | 70 +++++++++++++++++++ 3 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 src/test/java/DNPM/MerkmalskatalogTest.java diff --git a/src/main/java/DNPM/Merkmalskatalog.java b/src/main/java/DNPM/Merkmalskatalog.java index 5e9feec..29b41fb 100644 --- a/src/main/java/DNPM/Merkmalskatalog.java +++ b/src/main/java/DNPM/Merkmalskatalog.java @@ -1,5 +1,6 @@ package DNPM; +import DNPM.analyzer.AnalyzerUtils; import de.itc.onkostar.api.Disease; import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Procedure; @@ -12,7 +13,6 @@ import org.hibernate.SessionFactory; import org.hibernate.type.StandardBasicTypes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import java.util.List; import java.util.Map; @@ -21,8 +21,11 @@ public class Merkmalskatalog implements IProcedureAnalyzer { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private IOnkostarApi onkostarApi; + private final IOnkostarApi onkostarApi; + + public Merkmalskatalog(final IOnkostarApi onkostarApi) { + this.onkostarApi = onkostarApi; + } @Override public OnkostarPluginType getType() { @@ -69,20 +72,20 @@ public class Merkmalskatalog implements IProcedureAnalyzer { } public List getMerkmalskatalog(final Map input) { - var merkmalskatalog = input.get("Merkmalskatalog"); - var spalten = input.get("Spalten"); + var merkmalskatalog = AnalyzerUtils.getRequiredValue(input, "Merkmalskatalog", String.class); + var spalten = AnalyzerUtils.getRequiredValue(input, "Spalten", String.class); - if (null == merkmalskatalog || merkmalskatalog.toString().isBlank()) { + if (merkmalskatalog.isEmpty()) { logger.error("Kein Merkmalskatalog angegeben!"); return null; } - if (null == spalten || spalten.toString().isBlank()) { + if (spalten.isEmpty()) { logger.error("Keine Spalten angegeben!"); return null; } - String[] spaltenArray = spalten.toString().split("\\s*,\\s*"); + String[] spaltenArray = spalten.get().split("\\s*,\\s*"); try { SessionFactory sessionFactory = onkostarApi.getSessionFactory(); @@ -92,7 +95,7 @@ public class Merkmalskatalog implements IProcedureAnalyzer { + "FROM property_catalogue " + "LEFT JOIN property_catalogue_version ON property_catalogue_version.datacatalog_id = property_catalogue.id " + "LEFT JOIN property_catalogue_version_entry p ON p.property_version_id = property_catalogue_version.id " - + "WHERE name = '" + merkmalskatalog + "' AND aktiv = 1 " + + "WHERE name = '" + merkmalskatalog.get() + "' AND aktiv = 1 " + "ORDER BY position ASC"; SQLQuery query = session.createSQLQuery(sql); diff --git a/src/main/resources/de/itc/onkostar/library/moduleContext.xml b/src/main/resources/de/itc/onkostar/library/moduleContext.xml index 2ed7b14..3f34b04 100644 --- a/src/main/resources/de/itc/onkostar/library/moduleContext.xml +++ b/src/main/resources/de/itc/onkostar/library/moduleContext.xml @@ -14,7 +14,9 @@ - + + + diff --git a/src/test/java/DNPM/MerkmalskatalogTest.java b/src/test/java/DNPM/MerkmalskatalogTest.java new file mode 100644 index 0000000..0c292dc --- /dev/null +++ b/src/test/java/DNPM/MerkmalskatalogTest.java @@ -0,0 +1,70 @@ +package DNPM; + +import de.itc.onkostar.api.IOnkostarApi; +import org.hibernate.SQLQuery; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +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.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.*; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class MerkmalskatalogTest { + + private IOnkostarApi onkostarApi; + + private Merkmalskatalog merkmalskatalog; + + @BeforeEach + void setup( + @Mock IOnkostarApi onkostarApi + ) { + this.onkostarApi = onkostarApi; + this.merkmalskatalog = new Merkmalskatalog(onkostarApi); + } + + @Test + void testShouldReturnNullOnParamCheckIfNoMerkmalskatalogParamGiven() { + var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Spalten", "id, code")); + assertThat(actual).isNull(); + + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + + @Test + void testShouldReturnNullOnParamCheckIfNoSpaltenParamGiven() { + var actual = merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1")); + assertThat(actual).isNull(); + + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + + @Test + void testShouldCreateSqlQueryWithMerkmalskatalog() { + var sessionFactory = mock(SessionFactory.class); + var session = mock(Session.class); + var query = mock(SQLQuery.class); + + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); + + merkmalskatalog.getMerkmalskatalog(Map.of("Merkmalskatalog", "MK1", "Spalten", "id, code")); + + var argumentCaptor = ArgumentCaptor.forClass(String.class); + verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).contains("WHERE name = 'MK1' AND aktiv = 1"); + } + +}