@@ -36,14 +36,19 @@ public class BiddingBaseManagerTest {
3636 @ Mock
3737 ScarRequestHandler _scarRequestHandlerMock ;
3838
39- private BiddingBaseManager manager ;
39+ private BiddingBaseManager managerWithTokenListener ;
40+ private BiddingBaseManager managerWithNullListener ;
41+
4042 private String TEST_TOKEN = "token" ;
43+ private boolean isAsyncTokenCall = true ;
44+ private boolean isNotAsyncTokenCall = false ;
45+
4146
4247 @ Before
4348 public void setup () {
4449 ClientProperties .setApplication ((Application ) InstrumentationRegistry .getInstrumentation ().getTargetContext ().getApplicationContext ());
4550 ClientProperties .setApplicationContext (InstrumentationRegistry .getInstrumentation ().getTargetContext ());
46- manager = Mockito .spy (new BiddingBaseManager (publisherListener ) {
51+ managerWithTokenListener = Mockito .spy (new BiddingBaseManager (publisherListener ) {
4752 @ Override
4853 public void start () {
4954
@@ -55,15 +60,28 @@ public void onUnityTokenSuccessfullyFetched() {
5560 }
5661 });
5762
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 );
5977 }
6078
6179 @ Test
62- public void testSendsMetricWhenFetchStarts () {
63- manager .fetchSignals ();
80+ public void testSendsAsyncMetricWhenFetchStartsWithAsyncTokenCall () {
81+ managerWithTokenListener .fetchSignals ();
6482
6583 final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
66- final Metric desiredMetric = ScarMetric .hbSignalsFetchStart ();
84+ final Metric desiredMetric = ScarMetric .hbSignalsFetchStart (isAsyncTokenCall );
6785 Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
6886 final Metric capturedMetric = metricsCaptor .getValue ();
6987 Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
@@ -72,31 +90,31 @@ public void testSendsMetricWhenFetchStarts() {
7290 }
7391
7492 @ Test
75- public void testSendsMetricWhenFetchSucceeds () {
93+ public void testSendsAsyncMetricWhenFetchSucceedsWithAsyncTokenCall () {
7694 final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
77- final Metric desiredMetric = ScarMetric .hbSignalsFetchSuccess ();
95+ final Metric desiredMetric = ScarMetric .hbSignalsFetchSuccess (isAsyncTokenCall );
7896
79- manager .sendFetchResult ("" );
97+ managerWithTokenListener .sendFetchResult ("" );
8098 Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
8199 final Metric capturedMetric = metricsCaptor .getValue ();
82100 Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
83101 Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
84102 }
85103
86104 @ Test
87- public void testSendsMetricWhenFetchFails () {
105+ public void testSendsAsyncMetricWhenFetchFailsWithAsyncTokenCall () {
88106 final ArgumentCaptor <Metric > metricsCaptor = ArgumentCaptor .forClass (Metric .class );
89- final Metric desiredMetric = ScarMetric .hbSignalsFetchFailure ("ERROR" );
107+ final Metric desiredMetric = ScarMetric .hbSignalsFetchFailure (isAsyncTokenCall , "ERROR" );
90108
91- manager .sendFetchResult ("ERROR" );
109+ managerWithTokenListener .sendFetchResult ("ERROR" );
92110 Mockito .verify (_metricSenderMock , Mockito .times (1 )).sendMetric (metricsCaptor .capture ());
93111 final Metric capturedMetric = metricsCaptor .getValue ();
94112 Assert .assertEquals (desiredMetric .getName (), capturedMetric .getName ());
95113 Assert .assertEquals (desiredMetric .getTags (), capturedMetric .getTags ());
96114 }
97115
98116 @ Test
99- public void testSendsMetricWhenUploadStartsAndSucceeds () throws InterruptedException {
117+ public void testSendsAsyncMetricWhenUploadStartsAndSucceedsWithAsyncTokenCall () throws InterruptedException {
100118 BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (publisherListener , _scarRequestHandlerMock ) {
101119 @ Override
102120 public void start () {
@@ -111,8 +129,8 @@ public void onUnityTokenSuccessfullyFetched() {
111129 Mockito .when (managerWithScarRequestSender .getMetricSender ()).thenReturn (_metricSenderMock );
112130
113131 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 );
116134
117135 managerWithScarRequestSender .permitUpload ();
118136 managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
@@ -131,12 +149,12 @@ public void onUnityTokenSuccessfullyFetched() {
131149 }
132150
133151 @ Test
134- public void testSendsMetricWhenUploadFailsWithNullSignals () {
135- manager .uploadSignals ();
152+ public void testSendsAsyncMetricWhenUploadFailsWithNullSignalsAndAsyncTokenCall () {
153+ managerWithTokenListener .uploadSignals ();
136154
137155 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" );
140158 Mockito .verify (_metricSenderMock , Mockito .times (2 )).sendMetric (metricsCaptor .capture ());
141159 final Metric firstCapturedMetric = metricsCaptor .getAllValues ().get (0 );
142160 final Metric secondCapturedMetric = metricsCaptor .getAllValues ().get (1 );
@@ -149,7 +167,7 @@ public void testSendsMetricWhenUploadFailsWithNullSignals() {
149167 }
150168
151169 @ Test
152- public void testSendsMetricWhenUploadRequestFailsWithMalformedUrl () throws Exception {
170+ public void testSendsAsyncMetricWhenUploadRequestFailsWithMalformedUrlAndAsyncTokenCall () throws Exception {
153171 String errorMessage = "bad request" ;
154172 Mockito .doThrow (new Exception (errorMessage )).when (_scarRequestHandlerMock ).makeUploadRequest (Mockito .<String >any (), Mockito .<BiddingSignals >any (), any (String .class ));
155173 BiddingBaseManager managerWithScarRequestSender = Mockito .spy (new BiddingBaseManager (publisherListener , _scarRequestHandlerMock ) {
@@ -169,8 +187,135 @@ public void onUnityTokenSuccessfullyFetched() {
169187 managerWithScarRequestSender .onSignalsReady (new BiddingSignals ("testRewardedSignal" , "testInterstitialSignal" ));
170188
171189 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 );
174319
175320 Thread .sleep (1000 );
176321
@@ -187,58 +332,58 @@ public void onUnityTokenSuccessfullyFetched() {
187332
188333 @ Test
189334 public void testOnUnityAdsTokenReadyWithListener () {
190- manager .onUnityAdsTokenReady (TEST_TOKEN );
335+ managerWithTokenListener .onUnityAdsTokenReady (TEST_TOKEN );
191336 Mockito .verify (publisherListener , Mockito .times (1 )).onUnityAdsTokenReady (TEST_TOKEN );
192337 }
193338
194339 @ Test
195340 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 ();
198343 }
199344
200345 @ Test
201346 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 ();
204349 }
205350
206351 @ Test
207352 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 ();
210355 }
211356
212357 @ Test
213358 public void testUploadSignalsAfterPermittedAndSignalsReady () throws InterruptedException {
214- manager .permitSignalsUpload ();
359+ managerWithTokenListener .permitSignalsUpload ();
215360 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 ();
218363 }
219364
220365 @ Test
221366 public void testNoUploadSignalsAfterPermittedButSignalsNotReady () throws InterruptedException {
222- manager .permitSignalsUpload ();
367+ managerWithTokenListener .permitSignalsUpload ();
223368 Thread .sleep (100 );
224- Mockito .verify (manager , Mockito .times (0 )).uploadSignals ();
369+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).uploadSignals ();
225370 }
226371
227372 @ Test
228373 public void testUploadSignalsAfterSignalsReadyButNotPermitted () throws InterruptedException {
229- manager .onSignalsReady (new BiddingSignals ("test" , "test" ));
374+ managerWithTokenListener .onSignalsReady (new BiddingSignals ("test" , "test" ));
230375 Thread .sleep (100 );
231- Mockito .verify (manager , Mockito .times (0 )).uploadSignals ();
376+ Mockito .verify (managerWithTokenListener , Mockito .times (0 )).uploadSignals ();
232377 }
233378
234379 @ Test
235380 public void testOnlyOneUploadAllowedAfterSignalsReady () throws InterruptedException {
236- manager .permitSignalsUpload ();
381+ managerWithTokenListener .permitSignalsUpload ();
237382 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 ();
243388 }
244389}
0 commit comments