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
134
135
136
137
138
139
|
package dev.dnpm.oshelper.services.mtb;
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.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doAnswer;
@ExtendWith(MockitoExtension.class)
class MrMtbAnmeldungToProtocolMapperTest {
private IOnkostarApi onkostarApi;
private MrMtbAnmeldungToProtocolMapper mapper;
@BeforeEach
void setup(
@Mock IOnkostarApi onkostarApi
) {
this.onkostarApi = onkostarApi;
this.mapper = new MrMtbAnmeldungToProtocolMapper(onkostarApi);
}
@Test
void testShouldMapCompletedForm() {
var anmeldung = new Procedure(onkostarApi);
anmeldung.setId(1);
anmeldung.setFormName("MR.MTB_Anmeldung");
anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
var empfehlung = new Procedure(onkostarApi);
empfehlung.setId(2);
empfehlung.setFormName("MR.MTB_Empfehlung");
var einzelempfehlung1 = new Procedure(onkostarApi);
einzelempfehlung1.setId(10);
einzelempfehlung1.setFormName("MR.MTB_Einzelempfehlung");
einzelempfehlung1.setValue("Prioritaet", new Item("Empfehlungsprio", 1));
einzelempfehlung1.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung1"));
var einzelempfehlung2 = new Procedure(onkostarApi);
einzelempfehlung2.setId(20);
einzelempfehlung2.setFormName("MR.MTB_Einzelempfehlung");
einzelempfehlung2.setValue("Prioritaet", new Item("Empfehlungsprio", 2));
einzelempfehlung2.setValue("Empfehlung", new Item("Empfehlung", "Empfehlung2"));
doAnswer(invocationOnMock -> {
var procedureId = invocationOnMock.getArgument(0, Integer.class);
if (2 == procedureId) {
return empfehlung;
} else if (10 == procedureId) {
return einzelempfehlung1;
} else if (20 == procedureId) {
return einzelempfehlung2;
}
return null;
}).when(onkostarApi).getProcedure(anyInt());
doAnswer(invocationOnMock -> {
var procedureId = invocationOnMock.getArgument(0, Integer.class);
if (2 == procedureId) {
return Set.of(einzelempfehlung1, einzelempfehlung2);
}
return null;
}).when(onkostarApi).getSubprocedures(anyInt());
var actual = this.mapper.apply(anmeldung);
assertThat(actual)
.isPresent()
.contains(
"Fragestellung:\nFrage?\n\n"
+ "Empfehlung:\nEmpfehlung1\n\n"
+ "Empfehlung:\nEmpfehlung2"
);
}
@Test
void testShouldMapFormWithMissingEinzelempfehlungen() {
var anmeldung = new Procedure(onkostarApi);
anmeldung.setId(1);
anmeldung.setFormName("MR.MTB_Anmeldung");
anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
anmeldung.setValue("Empfehlung", new Item("Empfehlung", 2));
var empfehlung = new Procedure(onkostarApi);
empfehlung.setId(2);
empfehlung.setFormName("MR.MTB_Empfehlung");
doAnswer(invocationOnMock -> {
var procedureId = invocationOnMock.getArgument(0, Integer.class);
if (2 == procedureId) {
return empfehlung;
}
return null;
}).when(onkostarApi).getProcedure(anyInt());
var actual = this.mapper.apply(anmeldung);
assertThat(actual)
.isPresent()
.contains("Fragestellung:\nFrage?");
}
@Test
void testShouldMapFormWithMissingEmpfehlung() {
var anmeldung = new Procedure(onkostarApi);
anmeldung.setId(1);
anmeldung.setFormName("MR.MTB_Anmeldung");
anmeldung.setValue("Fragestellung", new Item("Fragestellung", "Frage?"));
var actual = this.mapper.apply(anmeldung);
assertThat(actual)
.isPresent()
.contains("Fragestellung:\nFrage?");
}
@Test
void testShouldMapFormWithMissingFragestellungAndEmpfehlung() {
var anmeldung = new Procedure(onkostarApi);
anmeldung.setId(1);
anmeldung.setFormName("MR.MTB_Anmeldung");
var actual = this.mapper.apply(anmeldung);
assertThat(actual).isEmpty();
}
}
|