Skip to content

Commit ce3cb3a

Browse files
runnerrunner
authored andcommitted
Release 4.6.1
1 parent 9d292e9 commit ce3cb3a

File tree

7 files changed

+278
-78
lines changed

7 files changed

+278
-78
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.unity3d.ads.example"
88
minSdkVersion 19
99
targetSdkVersion 32
10-
versionCode = 4600
11-
versionName = "4.6.0"
10+
versionCode = 4610
11+
versionName = "4.6.1"
1212
}
1313

1414
buildTypes {

unity-ads/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ if (project.rootProject.file('local.properties').exists()) {
1313
ext {
1414
GROUP_ID = "com.unity3d.ads"
1515
ARTIFACT_ID = "unity-ads"
16-
VERSION_ID = "4.6.0"
17-
VERSION_CODE = 4600
16+
VERSION_ID = "4.6.1"
17+
VERSION_CODE = 4610
1818
SIGN_AAR = properties.getProperty("SIGN_AAR") ?: false
1919
}
2020

unity-ads/src/androidTest/java/com/unity3d/ads/test/instrumentation/services/ads/gmascar/managers/BiddingBaseManagerTest.java

Lines changed: 187 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)