diff options
Diffstat (limited to 'src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java')
| -rw-r--r-- | src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java | 386 |
1 files changed, 203 insertions, 183 deletions
diff --git a/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java b/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java index 839db4c..87f1771 100644 --- a/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java +++ b/src/test/java/dev/dnpm/oshelper/DNPMHelperTest.java @@ -19,15 +19,23 @@ package dev.dnpm.oshelper; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; + +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; +import de.itc.onkostar.api.Patient; +import de.itc.onkostar.api.Procedure; import dev.dnpm.oshelper.analyzer.DNPMHelper; import dev.dnpm.oshelper.security.DelegatingDataBasedPermissionEvaluator; import dev.dnpm.oshelper.security.IllegalSecuredObjectAccessException; import dev.dnpm.oshelper.security.PermissionType; import dev.dnpm.oshelper.services.systemtherapie.SystemtherapieService; -import de.itc.onkostar.api.IOnkostarApi; -import de.itc.onkostar.api.Item; -import de.itc.onkostar.api.Patient; -import de.itc.onkostar.api.Procedure; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -39,154 +47,149 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; - @ExtendWith(MockitoExtension.class) class DNPMHelperTest { - private IOnkostarApi onkostarApi; + private IOnkostarApi onkostarApi; - private SystemtherapieService systemtherapieService; + private SystemtherapieService systemtherapieService; - private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator; + private DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator; - private DNPMHelper dnpmHelper; + private DNPMHelper dnpmHelper; - @BeforeEach - void setup( - @Mock IOnkostarApi onkostarApi, - @Mock SystemtherapieService systemtherapieService, - @Mock DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator - ) { - this.onkostarApi = onkostarApi; - this.systemtherapieService = systemtherapieService; - this.delegatingDataBasedPermissionEvaluator = delegatingDataBasedPermissionEvaluator; - this.dnpmHelper = new DNPMHelper(onkostarApi, systemtherapieService, delegatingDataBasedPermissionEvaluator); - } + @BeforeEach + void setup( + @Mock IOnkostarApi onkostarApi, + @Mock SystemtherapieService systemtherapieService, + @Mock DelegatingDataBasedPermissionEvaluator delegatingDataBasedPermissionEvaluator) { + this.onkostarApi = onkostarApi; + this.systemtherapieService = systemtherapieService; + this.delegatingDataBasedPermissionEvaluator = delegatingDataBasedPermissionEvaluator; + this.dnpmHelper = + new DNPMHelper(onkostarApi, systemtherapieService, delegatingDataBasedPermissionEvaluator); + } + + @Test + void testShouldRequestSystemischeTherapienFromDiagnose() { + dnpmHelper.getSystemischeTherapienFromDiagnose(Map.of("DiagnoseId", 1234)); + + var captor = ArgumentCaptor.forClass(Integer.class); + verify(systemtherapieService, times(1)).getSystemischeTherapienFromDiagnose(captor.capture()); + assertThat(captor.getValue()).isEqualTo(1234); + } + + @Test + void testShouldReturnNullIfNoDiagnoseIdCallingGetSystemischeTherapienFromDiagnose() { + var actual = dnpmHelper.getSystemischeTherapienFromDiagnose(new HashMap<>()); + + assertThat(actual).isNull(); + } + + @Test + void testShouldReturnNullIfNoProcedureIdCallingGetEmpfehlung() { + var actual = dnpmHelper.getEmpfehlung(new HashMap<>()); + + assertThat(actual).isNull(); + } + + @Nested + class UpdateEmpfehlungPrioTests { @Test - void testShouldRequestSystemischeTherapienFromDiagnose() { - dnpmHelper.getSystemischeTherapienFromDiagnose(Map.of("DiagnoseId", 1234)); + void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>()); - var captor = ArgumentCaptor.forClass(Integer.class); - verify(systemtherapieService, times(1)).getSystemischeTherapienFromDiagnose(captor.capture()); - assertThat(captor.getValue()).isEqualTo(1234); + assertThat(actual).isEqualTo(false); } @Test - void testShouldReturnNullIfNoDiagnoseIdCallingGetSystemischeTherapienFromDiagnose() { - var actual = dnpmHelper.getSystemischeTherapienFromDiagnose(new HashMap<>()); + void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01")); - assertThat(actual).isNull(); + assertThat(actual).isEqualTo(false); } @Test - void testShouldReturnNullIfNoProcedureIdCallingGetEmpfehlung() { - var actual = dnpmHelper.getEmpfehlung(new HashMap<>()); + void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234)); - assertThat(actual).isNull(); + assertThat(actual).isEqualTo(false); } - @Nested - class UpdateEmpfehlungPrioTests { - - @Test - void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>()); + @Test + void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() { + var sessionFactory = mock(SessionFactory.class); + var session = mock(Session.class); + var query = mock(SQLQuery.class); - assertThat(actual).isEqualTo(false); - } + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); - @Test - void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01")); + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); - assertThat(actual).isEqualTo(false); - } + assertThat(actual).isEqualTo(true); + } - @Test - void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234)); + @Test + void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() { + var sessionFactory = mock(SessionFactory.class); + var session = mock(Session.class); + var query = mock(SQLQuery.class); - assertThat(actual).isEqualTo(false); - } + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); - @Test - void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() { - var sessionFactory = mock(SessionFactory.class); - var session = mock(Session.class); - var query = mock(SQLQuery.class); + dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); - when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); - when(sessionFactory.getCurrentSession()).thenReturn(session); - when(session.createSQLQuery(anyString())).thenReturn(query); + var argumentCaptor = ArgumentCaptor.forClass(String.class); + verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()) + .isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' "); + } + } - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); + @Nested + class GetProzedurenFromDiagnoseTests { + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoDataFormParamGiven() { + var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("DiagnoseId", 1, "PatientId", 2)); + assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - assertThat(actual).isEqualTo(true); - } + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } - @Test - void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() { - var sessionFactory = mock(SessionFactory.class); - var session = mock(Session.class); - var query = mock(SQLQuery.class); + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoDiagnoseIdParamGiven() { + var actual = + dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "PatientId", 2)); + assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); - when(sessionFactory.getCurrentSession()).thenReturn(session); - when(session.createSQLQuery(anyString())).thenReturn(query); + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } - dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoPatientIdParamGiven() { + var actual = + dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1)); + assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - var argumentCaptor = ArgumentCaptor.forClass(String.class); - verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); - assertThat(argumentCaptor.getValue()).isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' "); - } + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + @Test + void testShouldRequestProceduresIfRequiredParamsGiven() { + dnpmHelper.getProzedurenFromDiagnose( + Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); + verify(onkostarApi, times(1)).getProceduresByPatientId(anyInt()); } - @Nested - class GetProzedurenFromDiagnoseTests { - @Test - void testShouldReturnEmptyStringOnParamCheckIfNoDataFormParamGiven() { - var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("DiagnoseId", 1, "PatientId", 2)); - assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - - verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); - } - - @Test - void testShouldReturnEmptyStringOnParamCheckIfNoDiagnoseIdParamGiven() { - var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "PatientId", 2)); - assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - - verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); - } - - @Test - void testShouldReturnEmptyStringOnParamCheckIfNoPatientIdParamGiven() { - var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1)); - assertThat(actual).isExactlyInstanceOf(String.class).isEmpty(); - - verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); - } - - @Test - void testShouldRequestProceduresIfRequiredParamsGiven() { - dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); - verify(onkostarApi, times(1)).getProceduresByPatientId(anyInt()); - } - - @Test - void testShouldNotReturnProceduresNotRelatedToDisease() { - doAnswer(invocationOnMock -> { + @Test + void testShouldNotReturnProceduresNotRelatedToDisease() { + doAnswer( + invocationOnMock -> { var procedure = new Procedure(onkostarApi); procedure.setFormName("OS.Example1"); procedure.setId(11); @@ -194,15 +197,20 @@ class DNPMHelperTest { procedure.setValue("formfield", new Item("formfield", "Wert11")); return List.of(procedure); - }).when(onkostarApi).getProceduresByPatientId(anyInt()); - - var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); - assertThat(actual).isEqualTo("[]"); - } + }) + .when(onkostarApi) + .getProceduresByPatientId(anyInt()); + + var actual = + dnpmHelper.getProzedurenFromDiagnose( + Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); + assertThat(actual).isEqualTo("[]"); + } - @Test - void testShouldReturnProcedures() { - doAnswer(invocationOnMock -> { + @Test + void testShouldReturnProcedures() { + doAnswer( + invocationOnMock -> { var procedure1 = new Procedure(onkostarApi); procedure1.setFormName("OS.Example1"); procedure1.setId(11); @@ -225,90 +233,102 @@ class DNPMHelperTest { procedure3.setValue("formfield", new Item("formfield", "Wert12")); return List.of(procedure1, procedure2, procedure3); - }).when(onkostarApi).getProceduresByPatientId(anyInt()); - - var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); - assertThat(actual).contains("OS.Example1", "OS.Example2", "Wert11", "Wert21", "Wert12"); - } + }) + .when(onkostarApi) + .getProceduresByPatientId(anyInt()); + + var actual = + dnpmHelper.getProzedurenFromDiagnose( + Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); + assertThat(actual).contains("OS.Example1", "OS.Example2", "Wert11", "Wert21", "Wert12"); } + } - @Nested - class GetVerweiseTests { + @Nested + class GetVerweiseTests { - @Test - void testShouldReturnEmptyArrayIfNoProcedureIdParamGiven() { - var actual = dnpmHelper.getVerweise(Map.of("PatientId", 2)); - assertThat(actual).isNull(); + @Test + void testShouldReturnEmptyArrayIfNoProcedureIdParamGiven() { + var actual = dnpmHelper.getVerweise(Map.of("PatientId", 2)); + assertThat(actual).isNull(); - verify(onkostarApi, times(0)).getSessionFactory(); - } + verify(onkostarApi, times(0)).getSessionFactory(); + } - @Test - void testShouldReturnEmptyArrayIfNoPatientIdParamGiven() { - var actual = dnpmHelper.getVerweise(Map.of("ProcedureId", 1)); - assertThat(actual).isNull(); + @Test + void testShouldReturnEmptyArrayIfNoPatientIdParamGiven() { + var actual = dnpmHelper.getVerweise(Map.of("ProcedureId", 1)); + assertThat(actual).isNull(); - verify(onkostarApi, times(0)).getSessionFactory(); - } + verify(onkostarApi, times(0)).getSessionFactory(); + } - @Test - void testShouldRequestSessionFactoryIfRequiredParamsGiven() { - dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2)); - verify(onkostarApi, times(1)).getSessionFactory(); - } + @Test + void testShouldRequestSessionFactoryIfRequiredParamsGiven() { + dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2)); + verify(onkostarApi, times(1)).getSessionFactory(); + } - @Test - void testShouldCreateSqlQueryWithPatientId() { - var sessionFactory = mock(SessionFactory.class); - var session = mock(Session.class); - var query = mock(SQLQuery.class); + @Test + void testShouldCreateSqlQueryWithPatientId() { + 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); + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); - dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2)); + dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2)); - var argumentCaptor = ArgumentCaptor.forClass(String.class); - verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); - assertThat(argumentCaptor.getValue()).contains("WHERE patient_id = 2 AND geloescht = 0"); - } + var argumentCaptor = ArgumentCaptor.forClass(String.class); + verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).contains("WHERE patient_id = 2 AND geloescht = 0"); + } - @Test - void testShouldReturnEcogStatusList() { - when(delegatingDataBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))) - .thenReturn(true); + @Test + void testShouldReturnEcogStatusList() { + when(delegatingDataBasedPermissionEvaluator.hasPermission( + any(), any(Patient.class), any(PermissionType.class))) + .thenReturn(true); - doAnswer(invocationOnMock -> { + doAnswer( + invocationOnMock -> { var id = invocationOnMock.getArgument(0, Integer.class); var patient = new Patient(onkostarApi); patient.setId(id); return patient; - }).when(onkostarApi).getPatient(anyInt()); + }) + .when(onkostarApi) + .getPatient(anyInt()); - dnpmHelper.getEcogStatus(Map.of("PatientId", 42)); + dnpmHelper.getEcogStatus(Map.of("PatientId", 42)); - var argumentCaptor = ArgumentCaptor.forClass(Patient.class); - verify(systemtherapieService, times(1)).ecogStatus(argumentCaptor.capture()); - assertThat(argumentCaptor.getValue()).isNotNull(); - assertThat(argumentCaptor.getValue().getId()).isEqualTo(42); - } + var argumentCaptor = ArgumentCaptor.forClass(Patient.class); + verify(systemtherapieService, times(1)).ecogStatus(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).isNotNull(); + assertThat(argumentCaptor.getValue().getId()).isEqualTo(42); + } - @Test - void testShouldNotReturnEcogStatusListIfNoPermissionGranted() { - when(delegatingDataBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))) - .thenReturn(false); + @Test + void testShouldNotReturnEcogStatusListIfNoPermissionGranted() { + when(delegatingDataBasedPermissionEvaluator.hasPermission( + any(), any(Patient.class), any(PermissionType.class))) + .thenReturn(false); - doAnswer(invocationOnMock -> { + doAnswer( + invocationOnMock -> { var id = invocationOnMock.getArgument(0, Integer.class); var patient = new Patient(onkostarApi); patient.setId(id); return patient; - }).when(onkostarApi).getPatient(anyInt()); - - assertThrows(IllegalSecuredObjectAccessException.class, () -> dnpmHelper.getEcogStatus(Map.of("PatientId", 42))); - } + }) + .when(onkostarApi) + .getPatient(anyInt()); + assertThrows( + IllegalSecuredObjectAccessException.class, + () -> dnpmHelper.getEcogStatus(Map.of("PatientId", 42))); } - + } } |
