15
15
16
16
package org .openlmis .requisition .web ;
17
17
18
+ import static org .mockito .ArgumentMatchers .anyCollection ;
19
+ import static org .mockito .ArgumentMatchers .anyMap ;
20
+ import static org .mockito .ArgumentMatchers .anySet ;
18
21
import static org .mockito .Matchers .any ;
19
22
import static org .mockito .Matchers .anyList ;
20
23
import static org .mockito .Mockito .doReturn ;
21
24
import static org .mockito .Mockito .never ;
22
25
import static org .mockito .Mockito .verify ;
26
+ import static org .mockito .Mockito .verifyNoInteractions ;
23
27
import static org .mockito .Mockito .when ;
24
28
import static org .mockito .internal .verification .VerificationModeFactory .atLeastOnce ;
25
29
30
+ import com .google .common .collect .Maps ;
26
31
import java .util .ArrayList ;
32
+ import java .util .Arrays ;
33
+ import java .util .Collections ;
34
+ import java .util .UUID ;
35
+
27
36
import org .junit .Before ;
28
37
import org .junit .Test ;
29
38
import org .mockito .InjectMocks ;
30
39
import org .mockito .Mock ;
31
40
import org .mockito .MockitoAnnotations ;
41
+ import org .openlmis .requisition .domain .requisition .Requisition ;
42
+ import org .openlmis .requisition .domain .requisition .RequisitionStatus ;
32
43
import org .openlmis .requisition .dto .ReleasableRequisitionBatchDto ;
33
44
import org .openlmis .requisition .dto .UserDto ;
45
+ import org .openlmis .requisition .dto .stockmanagement .StockEventDto ;
34
46
import org .openlmis .requisition .errorhandling .ValidationResult ;
47
+ import org .openlmis .requisition .i18n .MessageService ;
48
+ import org .openlmis .requisition .repository .RequisitionRepository ;
35
49
import org .openlmis .requisition .service .PermissionService ;
36
50
import org .openlmis .requisition .service .RequisitionService ;
51
+ import org .openlmis .requisition .service .referencedata .FacilityReferenceDataService ;
52
+ import org .openlmis .requisition .service .referencedata .FacilityTypeApprovedProductReferenceDataService ;
53
+ import org .openlmis .requisition .service .referencedata .OrderableReferenceDataService ;
54
+ import org .openlmis .requisition .service .referencedata .PeriodReferenceDataService ;
55
+ import org .openlmis .requisition .service .referencedata .SupervisoryNodeReferenceDataService ;
56
+ import org .openlmis .requisition .service .referencedata .SupplyLineReferenceDataService ;
57
+ import org .openlmis .requisition .service .referencedata .UserReferenceDataService ;
58
+ import org .openlmis .requisition .service .stockmanagement .StockEventStockManagementService ;
37
59
import org .openlmis .requisition .testutils .DtoGenerator ;
38
60
import org .openlmis .requisition .testutils .ReleasableRequisitionBatchDtoDataBuilder ;
39
61
import org .openlmis .requisition .utils .AuthenticationHelper ;
62
+ import org .openlmis .requisition .utils .StockEventBuilder ;
63
+ import org .springframework .test .util .ReflectionTestUtils ;
40
64
41
65
public class BatchRequisitionControllerTest {
42
66
@@ -49,14 +73,56 @@ public class BatchRequisitionControllerTest {
49
73
@ Mock
50
74
PermissionService permissionService ;
51
75
76
+ @ Mock
77
+ RequisitionRepository requisitionRepository ;
78
+
79
+ @ Mock
80
+ UserReferenceDataService userReferenceDataService ;
81
+
82
+ @ Mock
83
+ SupervisoryNodeReferenceDataService supervisoryNodeReferenceDataService ;
84
+
85
+ @ Mock
86
+ OrderableReferenceDataService orderableReferenceDataService ;
87
+
88
+ @ Mock
89
+ FacilityReferenceDataService facilityReferenceDataService ;
90
+
91
+ @ Mock
92
+ PeriodReferenceDataService periodReferenceDataService ;
93
+
94
+ @ Mock
95
+ FacilityTypeApprovedProductReferenceDataService facilityTypeApprovedService ;
96
+
97
+ @ Mock
98
+ SupplyLineReferenceDataService supplyLineReferenceDataService ;
99
+
100
+ @ Mock
101
+ MessageService messageService ;
102
+
103
+ @ Mock
104
+ StockEventBuilder stockEventBuilder ;
105
+
106
+ @ Mock
107
+ StockEventStockManagementService stockEventStockManagementService ;
108
+
109
+ @ Mock
110
+ Requisition requisition ;
111
+
52
112
@ InjectMocks
53
- BatchRequisitionController batchRequisitionController ;
113
+ private BatchRequisitionController batchRequisitionController ;
114
+
115
+ private final UUID uuid1 = UUID .fromString ("00000000-0000-0000-0000-000000000001" );
116
+
117
+ private final UUID uuid2 = UUID .fromString ("00000000-0000-0000-0000-000000000002" );
118
+
119
+ private UserDto currentUser ;
54
120
55
121
@ Before
56
122
public void setUp () {
57
123
MockitoAnnotations .initMocks (this );
58
124
59
- UserDto currentUser = DtoGenerator .of (UserDto .class );
125
+ currentUser = DtoGenerator .of (UserDto .class );
60
126
when (authenticationHelper .getCurrentUser ()).thenReturn (currentUser );
61
127
}
62
128
@@ -98,4 +164,54 @@ public void batchReleaseRequisitionsWithoutOrderWhenUserHasPermission() {
98
164
verify (requisitionService , atLeastOnce ()).releaseWithoutOrder (any ());
99
165
}
100
166
167
+ @ Test
168
+ public void approveMultipleRequisitionsWhenTransferStockDataIsEnabled () {
169
+ ReflectionTestUtils .setField (batchRequisitionController ,
170
+ "isTransferStockDataFromRequisitionToStockManagementEnabled" , true );
171
+ when (requisitionRepository .readDistinctByIdIn (anyList ()))
172
+ .thenReturn (Collections .singletonList (requisition ));
173
+ when (requisition .getStatus ()).thenReturn (RequisitionStatus .APPROVED );
174
+
175
+ StockEventDto stockEventDto = DtoGenerator .of (StockEventDto .class );
176
+ when (stockEventBuilder .fromRequisition (any (Requisition .class ), any (), anyMap ()))
177
+ .thenReturn (stockEventDto );
178
+
179
+ batchRequisitionController .approve (Arrays .asList (uuid1 , uuid2 ));
180
+
181
+ verify (authenticationHelper ).getCurrentUser ();
182
+ verify (requisitionRepository ).readDistinctByIdIn (anyCollection ());
183
+ verify (userReferenceDataService ).getPermissionStrings (currentUser .getId ());
184
+ verify (supervisoryNodeReferenceDataService ).findByIds (anyList ());
185
+ verify (orderableReferenceDataService ).findByIdentities (anySet ());
186
+ verify (facilityReferenceDataService ).search (anySet ());
187
+ verify (periodReferenceDataService ).search (anySet ());
188
+ verify (facilityTypeApprovedService ).findByIdentities (anySet ());
189
+ verify (stockEventBuilder ).fromRequisition (requisition , currentUser .getId (), Maps .newHashMap ());
190
+ verify (stockEventStockManagementService ).submit (stockEventDto );
191
+ }
192
+
193
+ @ Test
194
+ public void approveMultipleRequisitionsWhenTransferStockDataIsDisabled () {
195
+ ReflectionTestUtils .setField (batchRequisitionController ,
196
+ "isTransferStockDataFromRequisitionToStockManagementEnabled" , false );
197
+ when (requisitionRepository .readDistinctByIdIn (anyList ()))
198
+ .thenReturn (Collections .singletonList (requisition ));
199
+ when (requisition .getStatus ()).thenReturn (RequisitionStatus .APPROVED );
200
+
201
+ StockEventDto stockEventDto = DtoGenerator .of (StockEventDto .class );
202
+ when (stockEventBuilder .fromRequisition (any (Requisition .class ), any (), anyMap ()))
203
+ .thenReturn (stockEventDto );
204
+
205
+ batchRequisitionController .approve (Arrays .asList (uuid1 , uuid2 ));
206
+
207
+ verify (authenticationHelper ).getCurrentUser ();
208
+ verify (requisitionRepository ).readDistinctByIdIn (anyCollection ());
209
+ verify (userReferenceDataService ).getPermissionStrings (currentUser .getId ());
210
+ verify (supervisoryNodeReferenceDataService ).findByIds (anyList ());
211
+ verify (orderableReferenceDataService ).findByIdentities (anySet ());
212
+ verify (facilityReferenceDataService ).search (anySet ());
213
+ verify (periodReferenceDataService ).search (anySet ());
214
+ verify (facilityTypeApprovedService ).findByIdentities (anySet ());
215
+ verifyNoInteractions (stockEventBuilder , stockEventStockManagementService );
216
+ }
101
217
}
0 commit comments