@@ -36,14 +36,19 @@ public class BiddingBaseManagerTest {
36
36
@ Mock
37
37
ScarRequestHandler _scarRequestHandlerMock ;
38
38
39
- private BiddingBaseManager manager ;
39
+ private BiddingBaseManager managerWithTokenListener ;
40
+ private BiddingBaseManager managerWithNullListener ;
41
+
40
42
private String TEST_TOKEN = "token" ;
43
+ private boolean isAsyncTokenCall = true ;
44
+ private boolean isNotAsyncTokenCall = false ;
45
+
41
46
42
47
@ Before
43
48
public void setup () {
44
49
ClientProperties .setApplication ((Application ) InstrumentationRegistry .getInstrumentation ().getTargetContext ().getApplicationContext ());
45
50
ClientProperties .setApplicationContext (InstrumentationRegistry .getInstrumentation ().getTargetContext ());
46
- manager = Mockito .spy (new BiddingBaseManager (publisherListener ) {
51
+ managerWithTokenListener = Mockito .spy (new BiddingBaseManager (publisherListener ) {
47
52
@ Override
48
53
public void start () {
49
54
@@ -55,15 +60,28 @@ public void onUnityTokenSuccessfullyFetched() {
55
60
}
56
61
});
57
62
58
- Mockito .when (manager .getMetricSender ()).thenReturn (_metricSenderMock );
63
+ managerWithNullListener = Mockito .spy (new BiddingBaseManager (null ) {
64
+ @ Override
65
+ public void start () {
66
+
67
+ }
68
+
69
+ @ Override
70
+ public void onUnityTokenSuccessfullyFetched () {
71
+
72
+ }
73
+ });
74
+
75
+ Mockito .when (managerWithTokenListener .getMetricSender ()).thenReturn (_metricSenderMock );
76
+ Mockito .when (managerWithNullListener .getMetricSender ()).thenReturn (_metricSenderMock );
59
77
}
60
78
61
79
@ Test
62
- public void testSendsMetricWhenFetchStarts () {
63
- manager .fetchSignals ();
80
+ public void testSendsAsyncMetricWhenFetchStartsWithAsyncTokenCall () {
81
+ managerWithTokenListener .fetchSignals ();
64
82
65
83
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
66
- final Metric desiredMetric = ScarMetric .hbSignalsFetchStart ();
84
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchStart (isAsyncTokenCall );
67
85
Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
68
86
final Metric capturedMetric = metricsCaptor .getValue ();
69
87
Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
@@ -72,31 +90,31 @@ public void testSendsMetricWhenFetchStarts() {
72
90
}
73
91
74
92
@ Test
75
- public void testSendsMetricWhenFetchSucceeds () {
93
+ public void testSendsAsyncMetricWhenFetchSucceedsWithAsyncTokenCall () {
76
94
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
77
- final Metric desiredMetric = ScarMetric .hbSignalsFetchSuccess ();
95
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchSuccess (isAsyncTokenCall );
78
96
79
- manager .sendFetchResult ("" );
97
+ managerWithTokenListener .sendFetchResult ("" );
80
98
Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
81
99
final Metric capturedMetric = metricsCaptor .getValue ();
82
100
Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
83
101
Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
84
102
}
85
103
86
104
@ Test
87
- public void testSendsMetricWhenFetchFails () {
105
+ public void testSendsAsyncMetricWhenFetchFailsWithAsyncTokenCall () {
88
106
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
89
- final Metric desiredMetric = ScarMetric .hbSignalsFetchFailure ("ERROR" );
107
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchFailure (isAsyncTokenCall , "ERROR" );
90
108
91
- manager .sendFetchResult ("ERROR" );
109
+ managerWithTokenListener .sendFetchResult ("ERROR" );
92
110
Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
93
111
final Metric capturedMetric = metricsCaptor .getValue ();
94
112
Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
95
113
Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
96
114
}
97
115
98
116
@ Test
99
- public void testSendsMetricWhenUploadStartsAndSucceeds () throws InterruptedException {
117
+ public void testSendsAsyncMetricWhenUploadStartsAndSucceedsWithAsyncTokenCall () throws InterruptedException {
100
118
BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (publisherListener , _scarRequestHandlerMock ) {
101
119
@ Override
102
120
public void start () {
@@ -111,8 +129,8 @@ public void onUnityTokenSuccessfullyFetched() {
111
129
Mockito .when (managerWithScarRequestSender .getMetricSender ()).thenReturn (_metricSenderMock );
112
130
113
131
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
114
- final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart ();
115
- final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadSuccess ();
132
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isAsyncTokenCall );
133
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadSuccess (isAsyncTokenCall );
116
134
117
135
managerWithScarRequestSender .permitUpload ();
118
136
managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
@@ -131,12 +149,12 @@ public void onUnityTokenSuccessfullyFetched() {
131
149
}
132
150
133
151
@ Test
134
- public void testSendsMetricWhenUploadFailsWithNullSignals () {
135
- manager .uploadSignals ();
152
+ public void testSendsAsyncMetricWhenUploadFailsWithNullSignalsAndAsyncTokenCall () {
153
+ managerWithTokenListener .uploadSignals ();
136
154
137
155
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
138
- final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart ();
139
- final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure ("null or empty signals" );
156
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isAsyncTokenCall );
157
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure (isAsyncTokenCall , "null or empty signals" );
140
158
Mockito .verify (_metricSenderMock , Mockito .times (2 )).sendMetric (metricsCaptor .capture ());
141
159
final Metric firstCapturedMetric = metricsCaptor .getAllValues ().get (0 );
142
160
final Metric secondCapturedMetric = metricsCaptor .getAllValues ().get (1 );
@@ -149,7 +167,7 @@ public void testSendsMetricWhenUploadFailsWithNullSignals() {
149
167
}
150
168
151
169
@ Test
152
- public void testSendsMetricWhenUploadRequestFailsWithMalformedUrl () throws Exception {
170
+ public void testSendsAsyncMetricWhenUploadRequestFailsWithMalformedUrlAndAsyncTokenCall () throws Exception {
153
171
String errorMessage = "bad request" ;
154
172
Mockito .doThrow (new Exception (errorMessage )).when (_scarRequestHandlerMock ).makeUploadRequest (Mockito .<String >any (), Mockito .<BiddingSignals >any (), any (String .class ));
155
173
BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (publisherListener , _scarRequestHandlerMock ) {
@@ -169,8 +187,135 @@ public void onUnityTokenSuccessfullyFetched() {
169
187
managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
170
188
171
189
final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
172
- final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart ();
173
- final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure (errorMessage );
190
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isAsyncTokenCall );
191
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure (isAsyncTokenCall , errorMessage );
192
+
193
+ Thread .sleep (1000 );
194
+
195
+ Mockito .verify (_metricSenderMock , Mockito .times (2 )).sendMetric (metricsCaptor .capture ());
196
+ final Metric firstCapturedMetric = metricsCaptor .getAllValues ().get (0 );
197
+ final Metric secondCapturedMetric = metricsCaptor .getAllValues ().get (1 );
198
+
199
+ Assert .assertEquals (firstDesiredMetric .getName (), firstCapturedMetric .getName ());
200
+ Assert .assertEquals (firstDesiredMetric .getTags (), firstCapturedMetric .getTags ());
201
+
202
+ Assert .assertEquals (secondDesiredMetric .getName (), secondCapturedMetric .getName ());
203
+ Assert .assertEquals (secondDesiredMetric .getTags (), secondCapturedMetric .getTags ());
204
+ }
205
+
206
+ @ Test
207
+ public void testSendsSyncMetricWhenFetchStartsWithSyncTokenCall () {
208
+ managerWithNullListener .fetchSignals ();
209
+
210
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
211
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchStart (isNotAsyncTokenCall );
212
+ Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
213
+ final Metric capturedMetric = metricsCaptor .getValue ();
214
+ Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
215
+ Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
216
+ Assert .assertEquals (desiredMetric .getValue (), capturedMetric .getValue ());
217
+ }
218
+
219
+ @ Test
220
+ public void testSendsSyncMetricWhenFetchSucceedsWithSyncTokenCall () {
221
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
222
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchSuccess (isNotAsyncTokenCall );
223
+
224
+ managerWithNullListener .sendFetchResult ("" );
225
+ Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
226
+ final Metric capturedMetric = metricsCaptor .getValue ();
227
+ Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
228
+ Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
229
+ }
230
+
231
+ @ Test
232
+ public void testSendsSyncMetricWhenFetchFailsWithSyncTokenCall () {
233
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
234
+ final Metric desiredMetric = ScarMetric .hbSignalsFetchFailure (isNotAsyncTokenCall , "ERROR" );
235
+
236
+ managerWithNullListener .sendFetchResult ("ERROR" );
237
+ Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
238
+ final Metric capturedMetric = metricsCaptor .getValue ();
239
+ Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
240
+ Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
241
+ }
242
+
243
+ @ Test
244
+ public void testSendsSyncMetricWhenUploadStartsAndSucceedsWithSyncTokenCall () throws InterruptedException {
245
+ BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (null , _scarRequestHandlerMock ) {
246
+ @ Override
247
+ public void start () {
248
+
249
+ }
250
+
251
+ @ Override
252
+ public void onUnityTokenSuccessfullyFetched () {
253
+
254
+ }
255
+ });
256
+ Mockito .when (managerWithScarRequestSender .getMetricSender ()).thenReturn (_metricSenderMock );
257
+
258
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
259
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isNotAsyncTokenCall );
260
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadSuccess (isNotAsyncTokenCall );
261
+
262
+ managerWithScarRequestSender .permitUpload ();
263
+ managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
264
+
265
+ Thread .sleep (1000 );
266
+
267
+ Mockito .verify (_metricSenderMock , Mockito .times (2 )).sendMetric (metricsCaptor .capture ());
268
+ final Metric firstCapturedMetric = metricsCaptor .getAllValues ().get (0 );
269
+ final Metric secondCapturedMetric = metricsCaptor .getAllValues ().get (1 );
270
+
271
+ Assert .assertEquals (firstDesiredMetric .getName (), firstCapturedMetric .getName ());
272
+ Assert .assertEquals (firstDesiredMetric .getTags (), firstCapturedMetric .getTags ());
273
+
274
+ Assert .assertEquals (secondDesiredMetric .getName (), secondCapturedMetric .getName ());
275
+ Assert .assertEquals (secondDesiredMetric .getTags (), secondCapturedMetric .getTags ());
276
+ }
277
+
278
+ @ Test
279
+ public void testSendsSyncMetricWhenUploadFailsWithNullSignalsAndSyncTokenCall () {
280
+ managerWithNullListener .uploadSignals ();
281
+
282
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
283
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isNotAsyncTokenCall );
284
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure (isNotAsyncTokenCall , "null or empty signals" );
285
+ Mockito .verify (_metricSenderMock , Mockito .times (2 )).sendMetric (metricsCaptor .capture ());
286
+ final Metric firstCapturedMetric = metricsCaptor .getAllValues ().get (0 );
287
+ final Metric secondCapturedMetric = metricsCaptor .getAllValues ().get (1 );
288
+
289
+ Assert .assertEquals (firstDesiredMetric .getName (), firstCapturedMetric .getName ());
290
+ Assert .assertEquals (firstDesiredMetric .getTags (), firstCapturedMetric .getTags ());
291
+
292
+ Assert .assertEquals (secondDesiredMetric .getName (), secondCapturedMetric .getName ());
293
+ Assert .assertEquals (secondDesiredMetric .getTags (), secondCapturedMetric .getTags ());
294
+ }
295
+
296
+ @ Test
297
+ public void testSendsSyncMetricWhenUploadRequestFailsWithMalformedUrlAndSyncTokenCall () throws Exception {
298
+ String errorMessage = "bad request" ;
299
+ Mockito .doThrow (new Exception (errorMessage )).when (_scarRequestHandlerMock ).makeUploadRequest (Mockito .<String >any (), Mockito .<BiddingSignals >any (), any (String .class ));
300
+ BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (null , _scarRequestHandlerMock ) {
301
+ @ Override
302
+ public void start () {
303
+
304
+ }
305
+
306
+ @ Override
307
+ public void onUnityTokenSuccessfullyFetched () {
308
+
309
+ }
310
+ });
311
+ Mockito .when (managerWithScarRequestSender .getMetricSender ()).thenReturn (_metricSenderMock );
312
+
313
+ managerWithScarRequestSender .permitUpload ();
314
+ managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
315
+
316
+ final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
317
+ final Metric firstDesiredMetric = ScarMetric .hbSignalsUploadStart (isNotAsyncTokenCall );
318
+ final Metric secondDesiredMetric = ScarMetric .hbSignalsUploadFailure (isNotAsyncTokenCall , errorMessage );
174
319
175
320
Thread .sleep (1000 );
176
321
@@ -187,58 +332,58 @@ public void onUnityTokenSuccessfullyFetched() {
187
332
188
333
@ Test
189
334
public void testOnUnityAdsTokenReadyWithListener () {
190
- manager .onUnityAdsTokenReady (TEST_TOKEN );
335
+ managerWithTokenListener .onUnityAdsTokenReady (TEST_TOKEN );
191
336
Mockito .verify (publisherListener , Mockito .times (1 )).onUnityAdsTokenReady (TEST_TOKEN );
192
337
}
193
338
194
339
@ Test
195
340
public void testOnUnityTokenSuccessfullyFetchedAfterOnUnityAdsTokenReadyWithValidToken () {
196
- manager .onUnityAdsTokenReady (TEST_TOKEN );
197
- Mockito .verify (manager , Mockito .times (1 )).onUnityTokenSuccessfullyFetched ();
341
+ managerWithTokenListener .onUnityAdsTokenReady (TEST_TOKEN );
342
+ Mockito .verify (managerWithTokenListener , Mockito .times (1 )).onUnityTokenSuccessfullyFetched ();
198
343
}
199
344
200
345
@ Test
201
346
public void testOnUnityTokenSuccessfullyFetchedAfterOnUnityAdsTokenReadyWithNullToken () {
202
- manager .onUnityAdsTokenReady (null );
203
- Mockito .verify (manager , Mockito .times (0 )).onUnityTokenSuccessfullyFetched ();
347
+ managerWithTokenListener .onUnityAdsTokenReady (null );
348
+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).onUnityTokenSuccessfullyFetched ();
204
349
}
205
350
206
351
@ Test
207
352
public void testOnUnityTokenSuccessfullyFetchedAfterOnUnityAdsTokenReadyWithEmptyToken () {
208
- manager .onUnityAdsTokenReady ("" );
209
- Mockito .verify (manager , Mockito .times (0 )).onUnityTokenSuccessfullyFetched ();
353
+ managerWithTokenListener .onUnityAdsTokenReady ("" );
354
+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).onUnityTokenSuccessfullyFetched ();
210
355
}
211
356
212
357
@ Test
213
358
public void testUploadSignalsAfterPermittedAndSignalsReady () throws InterruptedException {
214
- manager .permitSignalsUpload ();
359
+ managerWithTokenListener .permitSignalsUpload ();
215
360
Thread .sleep (100 );
216
- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
217
- Mockito .verify (manager , Mockito .times (1 )).uploadSignals ();
361
+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
362
+ Mockito .verify (managerWithTokenListener , Mockito .times (1 )).uploadSignals ();
218
363
}
219
364
220
365
@ Test
221
366
public void testNoUploadSignalsAfterPermittedButSignalsNotReady () throws InterruptedException {
222
- manager .permitSignalsUpload ();
367
+ managerWithTokenListener .permitSignalsUpload ();
223
368
Thread .sleep (100 );
224
- Mockito .verify (manager , Mockito .times (0 )).uploadSignals ();
369
+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).uploadSignals ();
225
370
}
226
371
227
372
@ Test
228
373
public void testUploadSignalsAfterSignalsReadyButNotPermitted () throws InterruptedException {
229
- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
374
+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
230
375
Thread .sleep (100 );
231
- Mockito .verify (manager , Mockito .times (0 )).uploadSignals ();
376
+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).uploadSignals ();
232
377
}
233
378
234
379
@ Test
235
380
public void testOnlyOneUploadAllowedAfterSignalsReady () throws InterruptedException {
236
- manager .permitSignalsUpload ();
381
+ managerWithTokenListener .permitSignalsUpload ();
237
382
Thread .sleep (100 );
238
- Mockito .verify (manager , Mockito .times (0 )).uploadSignals ();
239
- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
240
- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
241
- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
242
- Mockito .verify (manager , Mockito .times (1 )).uploadSignals ();
383
+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).uploadSignals ();
384
+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
385
+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
386
+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
387
+ Mockito .verify (managerWithTokenListener , Mockito .times (1 )).uploadSignals ();
243
388
}
244
389
}
0 commit comments