1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
package DNPM.services.systemtherapie;
import DNPM.services.SettingsService;
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.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
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;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class DefaultSystemtherapieServiceTest {
private IOnkostarApi onkostarApi;
private SettingsService settingsService;
private DefaultSystemtherapieService service;
@BeforeEach
void setup(@Mock IOnkostarApi onkostarApi, @Mock SettingsService settingsService) {
this.onkostarApi = onkostarApi;
this.settingsService = settingsService;
this.service = new DefaultSystemtherapieService(onkostarApi, settingsService);
}
private static Set<Map.Entry<String, Class<OsSystemischeTherapieToProzedurwerteMapper>>> expectedMapperMappings() {
return Map.ofEntries(Map.entry("OS.Systemische Therapie", OsSystemischeTherapieToProzedurwerteMapper.class), Map.entry("OS.Systemische Therapie.VarianteUKW", OsSystemischeTherapieToProzedurwerteMapper.class)).entrySet();
}
@ParameterizedTest
@MethodSource("expectedMapperMappings")
void testShouldMapFormNameToMapper(Map.Entry<String, Class<?>> expectedMapping) {
var procedure = new Procedure(onkostarApi);
procedure.setFormName(expectedMapping.getKey());
var actual = service.prozedurToProzedurwerteMapper(procedure);
assertThat(actual).isExactlyInstanceOf(expectedMapping.getValue());
}
private static List<String> formnameSetting() {
return List.of("OS.Systemische Therapie", "OS.Systemische Therapie.VarianteUKW");
}
@ParameterizedTest
@MethodSource("formnameSetting")
void testShouldRequestProceduresWithExpectedFormName(String expectedFormName) {
when(this.settingsService.getSetting(anyString())).thenReturn(Optional.of(expectedFormName));
when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString())).thenReturn(List.of());
service.getSystemischeTherapienFromDiagnose(123);
var argumentCaptor = ArgumentCaptor.forClass(String.class);
verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
assertThat(argumentCaptor.getValue()).isEqualTo(expectedFormName);
}
@Test
void testShouldRequestProceduresWithDefaultFormName() {
when(this.settingsService.getSetting(anyString())).thenReturn(Optional.empty());
when(this.onkostarApi.getProceduresForDiseaseByForm(anyInt(), anyString())).thenReturn(List.of());
service.getSystemischeTherapienFromDiagnose(123);
var argumentCaptor = ArgumentCaptor.forClass(String.class);
verify(onkostarApi, times(1)).getProceduresForDiseaseByForm(anyInt(), argumentCaptor.capture());
assertThat(argumentCaptor.getValue()).isEqualTo("OS.Systemische Therapie");
}
@Test
void testShouldReturnSystemischeTherapienFromDiagnose() {
doAnswer(invocationOnMock -> {
var procedure = new Procedure(onkostarApi);
procedure.setFormName("OS.Systemische Therapie");
return List.of(procedure);
}).when(this.onkostarApi).getProceduresForDiseaseByForm(anyInt(), anyString());
var actual = service.getSystemischeTherapienFromDiagnose(1);
assertThat(actual)
.isNotNull()
.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);
}
}
|