From 21c02ac06851afb46e751015aaeda734c4095041 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Wed, 12 Jul 2023 09:50:29 +0200 Subject: Issue #29: Servicemethoden um ECOG Status abzurufen hinzugefügt --- .../DefaultSystemtherapieServiceTest.java | 40 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/services/systemtherapie/DefaultSystemtherapieServiceTest.java b/src/test/java/DNPM/services/systemtherapie/DefaultSystemtherapieServiceTest.java index 40ce315..7852187 100644 --- a/src/test/java/DNPM/services/systemtherapie/DefaultSystemtherapieServiceTest.java +++ b/src/test/java/DNPM/services/systemtherapie/DefaultSystemtherapieServiceTest.java @@ -1,8 +1,7 @@ package DNPM.services.systemtherapie; import DNPM.services.SettingsService; -import de.itc.onkostar.api.IOnkostarApi; -import de.itc.onkostar.api.Procedure; +import de.itc.onkostar.api.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -12,6 +11,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.time.Instant; import java.util.*; import static org.assertj.core.api.Assertions.assertThat; @@ -94,4 +94,40 @@ class DefaultSystemtherapieServiceTest { .isExactlyInstanceOf(ArrayList.class) .hasSize(1); } + + @Test + void testShouldReturnListOfEcogStatusWithDate() { + doAnswer(invocationOnMock -> { + var disease = new Disease(onkostarApi); + disease.setId(1); + return List.of(disease); + }).when(this.onkostarApi).getDiseasesByPatientId(anyInt()); + + doAnswer(invocationOnMock -> { + var procedure1 = new Procedure(onkostarApi); + procedure1.setId(1); + procedure1.setFormName("OS.Systemische Therapie"); + procedure1.setStartDate(Date.from(Instant.parse("2023-07-01T06:00:00Z"))); + procedure1.setEditState(ProcedureEditStateType.COMPLETED); + procedure1.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); + + var procedure2 = new Procedure(onkostarApi); + procedure2.setId(2); + procedure2.setFormName("OS.Systemische Therapie"); + procedure2.setStartDate(Date.from(Instant.parse("2023-07-12T06:00:00Z"))); + procedure2.setEditState(ProcedureEditStateType.COMPLETED); + procedure2.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 2)); + return List.of(procedure1, procedure2); + }).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString()); + + var patient = new Patient(onkostarApi); + patient.setId(1); + + var actual = service.ecogSatus(patient); + + assertThat(actual) + .isNotNull() + .isExactlyInstanceOf(ArrayList.class) + .hasSize(2); + } } -- cgit v1.2.3 From a6238c14e3c08b4f7ee7045824eae4e47890ccd3 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Wed, 12 Jul 2023 10:11:11 +0200 Subject: Issue #29: Backend-Service für ECOG-Status hinzugefügt --- src/test/java/DNPM/DNPMHelperTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/DNPMHelperTest.java b/src/test/java/DNPM/DNPMHelperTest.java index a90f2fb..cd0b81d 100644 --- a/src/test/java/DNPM/DNPMHelperTest.java +++ b/src/test/java/DNPM/DNPMHelperTest.java @@ -3,6 +3,7 @@ package DNPM; import DNPM.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 org.hibernate.SQLQuery; import org.hibernate.Session; @@ -245,6 +246,23 @@ class DNPMHelperTest { assertThat(argumentCaptor.getValue()).contains("WHERE patient_id = 2 AND geloescht = 0"); } + @Test + void testShouldReturnEcogStatusList() { + doAnswer(invocationOnMock -> { + var id = invocationOnMock.getArgument(0, Integer.class); + var patient = new Patient(onkostarApi); + patient.setId(id); + return patient; + }).when(onkostarApi).getPatient(anyInt()); + + dnpmHelper.getEcogStatus(Map.of("PatientId", 42)); + + var argumentCaptor = ArgumentCaptor.forClass(Patient.class); + verify(systemtherapieService, times(1)).ecogSatus(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).isNotNull(); + assertThat(argumentCaptor.getValue().getId()).isEqualTo(42); + } + } } -- cgit v1.2.3 From 27476863809d4f2a0a704afd3a2a30f3feafdde4 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Wed, 12 Jul 2023 14:52:09 +0200 Subject: Issue #29: Tests für das Einfügen in ECOG Verlauf --- .../DNPM/analyzer/SystemtherapieAnalyzerTest.java | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java b/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java new file mode 100644 index 0000000..2450f96 --- /dev/null +++ b/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java @@ -0,0 +1,95 @@ +package DNPM.analyzer; + +import DNPM.services.systemtherapie.SystemtherapieService; +import de.itc.onkostar.api.*; +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.Date; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class SystemtherapieAnalyzerTest { + + private IOnkostarApi onkostarApi; + + private SystemtherapieService systemtherapieService; + + private SystemtherapieAnalyzer systemtherapieAnalyzer; + + @BeforeEach + void setUp( + @Mock IOnkostarApi onkostarApi, + @Mock SystemtherapieService systemtherapieService + ) { + this.onkostarApi = onkostarApi; + this.systemtherapieService = systemtherapieService; + this.systemtherapieAnalyzer = new SystemtherapieAnalyzer(onkostarApi, systemtherapieService); + } + + @Test + void shouldInsertNewEcogStatus() throws Exception { + doAnswer(invocationOnMock -> List.of(new SystemtherapieService.EcogStatusWithDate(new Date(), "0"))) + .when(systemtherapieService).ecogSatus(any(Patient.class)); + + var patient = new Patient(onkostarApi); + patient.setId(1); + + var procedure = new Procedure(onkostarApi); + procedure.setId(1000); + procedure.setStartDate(new Date()); + procedure.setEditState(ProcedureEditStateType.COMPLETED); + procedure.setPatientId(1); + procedure.setPatient(patient); + procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); + + doAnswer(invocationOnMock -> { + var disease = new Disease(onkostarApi); + disease.setId(42); + return List.of(disease); + }).when(this.onkostarApi).getDiseasesByPatientId(anyInt()); + + doAnswer(invocationOnMock -> List.of(procedure)).when(onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString()); + + systemtherapieAnalyzer.analyze(procedure, null); + + var idCaptor = ArgumentCaptor.forClass(Integer.class); + var formNameCaptor = ArgumentCaptor.forClass(String.class); + verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(idCaptor.capture(), formNameCaptor.capture()); + assertThat(idCaptor.getValue()).isEqualTo(42); + assertThat(formNameCaptor.getValue()).isEqualTo("DNPM Klinik/Anamnese"); + + verify(onkostarApi, times(1)).saveProcedure(any(Procedure.class), anyBoolean()); + } + + @Test + void shouldNotModifyEcogStatusIfNoCompletedSystemTherapy() throws Exception { + doAnswer(invocationOnMock -> List.of()) + .when(systemtherapieService).ecogSatus(any(Patient.class)); + + var patient = new Patient(onkostarApi); + patient.setId(1); + + var procedure = new Procedure(onkostarApi); + procedure.setId(1000); + procedure.setStartDate(new Date()); + procedure.setEditState(ProcedureEditStateType.COMPLETED); + procedure.setPatientId(1); + procedure.setPatient(patient); + procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); + + systemtherapieAnalyzer.analyze(procedure, null); + + verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString()); + verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean()); + } + +} -- cgit v1.2.3 From aef9dd7889ddf03cc75f5d682a26380ac6fb75d3 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 28 Aug 2023 12:17:29 +0200 Subject: Issue #29: Aktualisiere keinen EcogStatus vor Diagnosedatum --- .../DNPM/analyzer/SystemtherapieAnalyzerTest.java | 66 ++++++++++++++++++---- 1 file changed, 54 insertions(+), 12 deletions(-) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java b/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java index 2450f96..4028aec 100644 --- a/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java +++ b/src/test/java/DNPM/analyzer/SystemtherapieAnalyzerTest.java @@ -9,6 +9,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.List; @@ -25,10 +27,21 @@ class SystemtherapieAnalyzerTest { private SystemtherapieAnalyzer systemtherapieAnalyzer; + private Disease dummyDisease(int id, Date diagnosisDate) { + var disease = new Disease(onkostarApi); + disease.setId(id); + disease.setDiagnosisDate(diagnosisDate); + return disease; + } + + private Date daysPassed(int days) { + return Date.from(Instant.now().minus(days, ChronoUnit.DAYS)); + } + @BeforeEach void setUp( - @Mock IOnkostarApi onkostarApi, - @Mock SystemtherapieService systemtherapieService + @Mock IOnkostarApi onkostarApi, + @Mock SystemtherapieService systemtherapieService ) { this.onkostarApi = onkostarApi; this.systemtherapieService = systemtherapieService; @@ -37,7 +50,11 @@ class SystemtherapieAnalyzerTest { @Test void shouldInsertNewEcogStatus() throws Exception { - doAnswer(invocationOnMock -> List.of(new SystemtherapieService.EcogStatusWithDate(new Date(), "0"))) + final var diagnosisDate = daysPassed(7); + final var ecogDate = daysPassed(1); + final var procedureDate = daysPassed(1); + + doAnswer(invocationOnMock -> List.of(new SystemtherapieService.EcogStatusWithDate(ecogDate, "0"))) .when(systemtherapieService).ecogSatus(any(Patient.class)); var patient = new Patient(onkostarApi); @@ -45,21 +62,17 @@ class SystemtherapieAnalyzerTest { var procedure = new Procedure(onkostarApi); procedure.setId(1000); - procedure.setStartDate(new Date()); + procedure.setStartDate(procedureDate); procedure.setEditState(ProcedureEditStateType.COMPLETED); procedure.setPatientId(1); procedure.setPatient(patient); procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); - doAnswer(invocationOnMock -> { - var disease = new Disease(onkostarApi); - disease.setId(42); - return List.of(disease); - }).when(this.onkostarApi).getDiseasesByPatientId(anyInt()); + doAnswer(invocationOnMock -> List.of(dummyDisease(42, diagnosisDate))).when(this.onkostarApi).getDiseasesByPatientId(anyInt()); doAnswer(invocationOnMock -> List.of(procedure)).when(onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString()); - systemtherapieAnalyzer.analyze(procedure, null); + systemtherapieAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate)); var idCaptor = ArgumentCaptor.forClass(Integer.class); var formNameCaptor = ArgumentCaptor.forClass(String.class); @@ -72,6 +85,9 @@ class SystemtherapieAnalyzerTest { @Test void shouldNotModifyEcogStatusIfNoCompletedSystemTherapy() throws Exception { + final var diagnosisDate = daysPassed(7); + final var procedureDate = daysPassed(1); + doAnswer(invocationOnMock -> List.of()) .when(systemtherapieService).ecogSatus(any(Patient.class)); @@ -80,13 +96,39 @@ class SystemtherapieAnalyzerTest { var procedure = new Procedure(onkostarApi); procedure.setId(1000); - procedure.setStartDate(new Date()); + procedure.setStartDate(procedureDate); + procedure.setEditState(ProcedureEditStateType.COMPLETED); + procedure.setPatientId(1); + procedure.setPatient(patient); + procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); + + systemtherapieAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate)); + + verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString()); + verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean()); + } + + @Test + void shouldNotIncludeEcogStatusBeforeDiagnosisDate() throws Exception { + final var diagnosisDate = daysPassed(7); + final var ecogDate = daysPassed(28); + final var procedureDate = daysPassed(1); + + doAnswer(invocationOnMock -> List.of(new SystemtherapieService.EcogStatusWithDate(ecogDate, "0"))) + .when(systemtherapieService).ecogSatus(any(Patient.class)); + + var patient = new Patient(onkostarApi); + patient.setId(1); + + var procedure = new Procedure(onkostarApi); + procedure.setId(1000); + procedure.setStartDate(procedureDate); procedure.setEditState(ProcedureEditStateType.COMPLETED); procedure.setPatientId(1); procedure.setPatient(patient); procedure.setValue("ECOGvorTherapie", new Item("ECOGvorTherapie", 1)); - systemtherapieAnalyzer.analyze(procedure, null); + systemtherapieAnalyzer.analyze(procedure, dummyDisease(10, diagnosisDate)); verify(onkostarApi, times(0)).getProceduresForDiseaseByForm(anyInt(), anyString()); verify(onkostarApi, times(0)).saveProcedure(any(Procedure.class), anyBoolean()); -- cgit v1.2.3 From 35f1aa0d757900e1a5d22d04ab85c9b22882a07b Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 28 Aug 2023 14:39:43 +0200 Subject: Issue #29: Abgesicherter Zugriff auf ECOG Verlauf --- src/test/java/DNPM/DNPMHelperTest.java | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/test/java/DNPM') diff --git a/src/test/java/DNPM/DNPMHelperTest.java b/src/test/java/DNPM/DNPMHelperTest.java index cd0b81d..17e8901 100644 --- a/src/test/java/DNPM/DNPMHelperTest.java +++ b/src/test/java/DNPM/DNPMHelperTest.java @@ -1,5 +1,8 @@ package DNPM; +import DNPM.security.IllegalSecuredObjectAccessException; +import DNPM.security.PermissionType; +import DNPM.security.PersonPoolBasedPermissionEvaluator; import DNPM.services.systemtherapie.SystemtherapieService; import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Item; @@ -22,6 +25,7 @@ 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) @@ -31,16 +35,20 @@ class DNPMHelperTest { private SystemtherapieService systemtherapieService; + private PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator; + private DNPMHelper dnpmHelper; @BeforeEach void setup( @Mock IOnkostarApi onkostarApi, - @Mock SystemtherapieService systemtherapieService + @Mock SystemtherapieService systemtherapieService, + @Mock PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator ) { this.onkostarApi = onkostarApi; this.systemtherapieService = systemtherapieService; - this.dnpmHelper = new DNPMHelper(onkostarApi, systemtherapieService); + this.personPoolBasedPermissionEvaluator = personPoolBasedPermissionEvaluator; + this.dnpmHelper = new DNPMHelper(onkostarApi, systemtherapieService, personPoolBasedPermissionEvaluator); } @Test @@ -248,6 +256,9 @@ class DNPMHelperTest { @Test void testShouldReturnEcogStatusList() { + when(personPoolBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))) + .thenReturn(true); + doAnswer(invocationOnMock -> { var id = invocationOnMock.getArgument(0, Integer.class); var patient = new Patient(onkostarApi); @@ -263,6 +274,21 @@ class DNPMHelperTest { assertThat(argumentCaptor.getValue().getId()).isEqualTo(42); } + @Test + void testShouldNotReturnEcogStatusListIfNoPermissionGranted() { + when(personPoolBasedPermissionEvaluator.hasPermission(any(), any(Patient.class), any(PermissionType.class))) + .thenReturn(false); + + 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))); + } + } } -- cgit v1.2.3