1
1
package com .backbase .stream .task ;
2
2
3
3
import static org .mockito .ArgumentMatchers .any ;
4
- import static org .mockito .Mockito . atLeastOnce ;
4
+ import static org .mockito .ArgumentMatchers . eq ;
5
5
import static org .mockito .Mockito .doReturn ;
6
- import static org .mockito .Mockito .verify ;
7
6
import static org .mockito .Mockito .lenient ;
8
-
7
+ import java .math .BigDecimal ;
8
+ import java .time .LocalDate ;
9
+ import java .util .ArrayList ;
10
+ import java .util .List ;
11
+ import org .apache .commons .lang3 .StringUtils ;
12
+ import org .junit .jupiter .api .Assertions ;
13
+ import org .junit .jupiter .api .BeforeEach ;
14
+ import org .junit .jupiter .api .Test ;
15
+ import org .junit .jupiter .api .extension .ExtendWith ;
16
+ import org .mockito .ArgumentCaptor ;
17
+ import org .mockito .Captor ;
18
+ import org .mockito .Mock ;
19
+ import org .mockito .Mockito ;
20
+ import org .mockito .junit .jupiter .MockitoExtension ;
9
21
import com .backbase .dbs .arrangement .api .service .v2 .ArrangementsApi ;
10
22
import com .backbase .dbs .arrangement .api .service .v2 .model .AccountArrangementItem ;
11
23
import com .backbase .dbs .arrangement .api .service .v2 .model .AccountArrangementItems ;
24
36
import com .backbase .stream .paymentorder .PaymentOrderUnitOfWorkExecutor ;
25
37
import com .backbase .stream .worker .model .UnitOfWork ;
26
38
import com .backbase .stream .worker .repository .UnitOfWorkRepository ;
27
- import java .math .BigDecimal ;
28
-
29
- import java .util .ArrayList ;
30
- import org .apache .commons .lang3 .StringUtils ;
31
- import org .junit .jupiter .api .Assertions ;
32
- import org .junit .jupiter .api .BeforeEach ;
33
- import org .junit .jupiter .api .Test ;
34
- import org .junit .jupiter .api .extension .ExtendWith ;
35
- import org .mockito .Mock ;
36
- import org .mockito .Mockito ;
37
- import org .mockito .junit .jupiter .MockitoExtension ;
38
39
import reactor .core .publisher .Flux ;
39
40
import reactor .core .publisher .Mono ;
40
41
import reactor .test .StepVerifier ;
41
42
42
- import java .util .List ;
43
-
44
43
@ ExtendWith (MockitoExtension .class )
45
44
public class PaymentOrderUnitOfWorkExecutorTest extends PaymentOrderBaseTest {
46
45
@@ -53,6 +52,9 @@ public class PaymentOrderUnitOfWorkExecutorTest extends PaymentOrderBaseTest {
53
52
@ Mock
54
53
private UnitOfWorkRepository <PaymentOrderTask , String > repository ;
55
54
55
+ @ Captor
56
+ ArgumentCaptor <LocalDate > fromDateCaptor ;
57
+
56
58
private PaymentOrderTypeConfiguration paymentOrderTypeConfiguration = new PaymentOrderTypeConfiguration ();
57
59
58
60
private final PaymentOrderTaskExecutor streamTaskExecutor = new PaymentOrderTaskExecutor (paymentOrdersApi );
@@ -145,7 +147,85 @@ void test_prepareUnitOfWork_paymentOrderPostRequestFlux() {
145
147
})
146
148
.verifyComplete ();
147
149
}
150
+
151
+ @ Test
152
+ void test_prepareUnitOfWork_paymentOrderWithStartDateOffset () {
153
+ paymentOrderTypeConfiguration .setStartOffsetInDays (30l );
154
+ Flux <PaymentOrderPostRequest > paymentOrderPostRequestFlux = Flux .fromIterable (paymentOrderPostRequest );
155
+
156
+ PaymentOrderPostResponse paymentOrderPostResponse = new PaymentOrderPostResponse ()
157
+ .id ("po_post_resp_id" )
158
+ .putAdditionsItem ("key" , "val" );
159
+
160
+ lenient ().when (paymentOrdersApi .postPaymentOrder (any ()))
161
+ .thenReturn (Mono .just (paymentOrderPostResponse ));
162
+
163
+ GetPaymentOrderResponse getPaymentOrderResponse = new GetPaymentOrderResponse ()
164
+ .id ("arrangementId_1" )
165
+ .bankReferenceId ("bankReferenceId_1" );
166
+ PaymentOrderPostFilterResponse paymentOrderPostFilterResponse = new PaymentOrderPostFilterResponse ()
167
+ .addPaymentOrdersItem (getPaymentOrderResponse )
168
+ .totalElements (new BigDecimal (1 ));
169
+ doReturn (Mono .just (paymentOrderPostFilterResponse )).when (paymentOrdersApi ).postFilterPaymentOrders (any (), any (), any (), fromDateCaptor .capture (), any (),any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any ());
170
+
171
+ AccountArrangementItem accountArrangementItem = new AccountArrangementItem ()
172
+ .id ("arrangementId_1" )
173
+ .externalArrangementId ("externalArrangementId_1" );
174
+ AccountArrangementItems accountArrangementItems = new AccountArrangementItems ()
175
+ .addArrangementElementsItem (accountArrangementItem );
176
+
177
+ Mockito .when (arrangementsApi .postFilter (Mockito .any ()))
178
+ .thenReturn (Mono .just (accountArrangementItems ));
179
+
180
+ StepVerifier .create (paymentOrderUnitOfWorkExecutor .prepareUnitOfWork (paymentOrderPostRequestFlux ))
181
+ .assertNext (unitOfWork -> {
182
+ Assertions .assertTrue (unitOfWork .getUnitOfOWorkId ().startsWith ("payment-orders-mixed-" ));
183
+ Assertions .assertEquals (UnitOfWork .State .NEW , unitOfWork .getState ());
184
+ Assertions .assertEquals (1 , unitOfWork .getStreamTasks ().size ());
185
+ Assertions .assertEquals (paymentOrderPostRequest .size (), unitOfWork .getStreamTasks ().get (0 ).getData ().size ());
186
+ Assertions .assertEquals (LocalDate .now ().minusDays (30 ), fromDateCaptor .getValue ());
187
+ })
188
+ .verifyComplete ();
189
+ }
190
+
191
+ @ Test
192
+ void test_prepareUnitOfWork_paymentOrderWithoutStartDateOffset () {
193
+ Flux <PaymentOrderPostRequest > paymentOrderPostRequestFlux = Flux .fromIterable (paymentOrderPostRequest );
194
+
195
+ PaymentOrderPostResponse paymentOrderPostResponse = new PaymentOrderPostResponse ()
196
+ .id ("po_post_resp_id" )
197
+ .putAdditionsItem ("key" , "val" );
198
+
199
+ lenient ().when (paymentOrdersApi .postPaymentOrder (any ()))
200
+ .thenReturn (Mono .just (paymentOrderPostResponse ));
201
+
202
+ GetPaymentOrderResponse getPaymentOrderResponse = new GetPaymentOrderResponse ()
203
+ .id ("arrangementId_1" )
204
+ .bankReferenceId ("bankReferenceId_1" );
205
+ PaymentOrderPostFilterResponse paymentOrderPostFilterResponse = new PaymentOrderPostFilterResponse ()
206
+ .addPaymentOrdersItem (getPaymentOrderResponse )
207
+ .totalElements (new BigDecimal (1 ));
208
+ doReturn (Mono .just (paymentOrderPostFilterResponse )).when (paymentOrdersApi ).postFilterPaymentOrders (any (), any (), any (), fromDateCaptor .capture (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any (), any ());
209
+
210
+ AccountArrangementItem accountArrangementItem = new AccountArrangementItem ()
211
+ .id ("arrangementId_1" )
212
+ .externalArrangementId ("externalArrangementId_1" );
213
+ AccountArrangementItems accountArrangementItems = new AccountArrangementItems ()
214
+ .addArrangementElementsItem (accountArrangementItem );
148
215
216
+ Mockito .when (arrangementsApi .postFilter (Mockito .any ()))
217
+ .thenReturn (Mono .just (accountArrangementItems ));
218
+
219
+ StepVerifier .create (paymentOrderUnitOfWorkExecutor .prepareUnitOfWork (paymentOrderPostRequestFlux ))
220
+ .assertNext (unitOfWork -> {
221
+ Assertions .assertTrue (unitOfWork .getUnitOfOWorkId ().startsWith ("payment-orders-mixed-" ));
222
+ Assertions .assertEquals (UnitOfWork .State .NEW , unitOfWork .getState ());
223
+ Assertions .assertEquals (1 , unitOfWork .getStreamTasks ().size ());
224
+ Assertions .assertEquals (paymentOrderPostRequest .size (), unitOfWork .getStreamTasks ().get (0 ).getData ().size ());
225
+ Assertions .assertNull (fromDateCaptor .getValue ());
226
+ })
227
+ .verifyComplete ();
228
+ }
149
229
@ Test
150
230
void test_prepareunitofwork_blankuserid () {
151
231
0 commit comments