Skip to content

Commit c55e454

Browse files
added a couple more of listener unit tests
1 parent fedf965 commit c55e454

File tree

1 file changed

+94
-3
lines changed

1 file changed

+94
-3
lines changed

android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyClientTest.java

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@
2424
import com.optimizely.ab.android.event_handler.DefaultEventHandler;
2525
import com.optimizely.ab.bucketing.Bucketer;
2626
import com.optimizely.ab.bucketing.DecisionService;
27-
import com.optimizely.ab.config.Attribute;
2827
import com.optimizely.ab.config.Experiment;
2928
import com.optimizely.ab.config.ProjectConfig;
3029
import com.optimizely.ab.config.Variation;
3130
import com.optimizely.ab.event.EventHandler;
3231
import com.optimizely.ab.event.LogEvent;
3332
import com.optimizely.ab.event.internal.EventBuilder;
33+
import com.optimizely.ab.notification.ActivateNotificationListener;
34+
import com.optimizely.ab.notification.NotificationCenter;
3435
import com.optimizely.ab.notification.NotificationListener;
36+
import com.optimizely.ab.notification.TrackNotificationListener;
3537

3638
import org.junit.Assert;
3739
import org.junit.Before;
@@ -132,6 +134,52 @@ public void testGoodActivation() {
132134

133135
}
134136

137+
@Test
138+
public void testGoodActivationWithListener() {
139+
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely,
140+
logger);
141+
final boolean[] callbackCalled = new boolean[1];
142+
final Variation[] callbackVariation = new Variation[1];
143+
144+
callbackCalled[0] = false;
145+
int notificationId = optimizelyClient.getNotificationCenter().addNotification(NotificationCenter.NotificationType.Activate, new ActivateNotificationListener() {
146+
@Override
147+
public void onActivate( Experiment experiment, String userId, Map<String, String> attributes, Variation variation, LogEvent event) {
148+
callbackCalled[0] = true;
149+
callbackVariation[0] = variation;
150+
}
151+
});
152+
153+
Variation v = optimizelyClient.activate("android_experiment_key", "1");
154+
155+
assertEquals(v, callbackVariation[0]);
156+
assertEquals(true, callbackCalled[0]);
157+
assertEquals(1, notificationId);
158+
assertTrue(optimizelyClient.getNotificationCenter().removeNotification(notificationId));
159+
}
160+
161+
@Test
162+
public void testBadActivationWithListener() {
163+
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely,
164+
logger);
165+
final boolean[] callbackCalled = new boolean[1];
166+
167+
callbackCalled[0] = false;
168+
int notificationId = optimizelyClient.getNotificationCenter().addNotification(NotificationCenter.NotificationType.Activate, new TrackNotificationListener() {
169+
@Override
170+
public void onTrack(String eventKey, String userId, Map<String, String> attributes, Map<String, ?> eventTags, LogEvent event) {
171+
callbackCalled[0] = true;
172+
}
173+
});
174+
175+
Variation v = optimizelyClient.activate("android_experiment_key", "userId");
176+
177+
assertEquals(false, callbackCalled[0]);
178+
assertTrue(notificationId <= 0);
179+
assertFalse(optimizelyClient.getNotificationCenter().removeNotification(notificationId));
180+
181+
}
182+
135183
@Test
136184
public void testGoodForcedActivation() {
137185
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely, logger);
@@ -195,7 +243,6 @@ public void testGoodActivationBucketingId() {
195243
attributes.put(DecisionService.BUCKETING_ATTRIBUTE, bucketingId);
196244
Variation v = optimizelyClient.activate("android_experiment_key", "userId", attributes);
197245
verify(bucketer).bucket( experiment, bucketingId);
198-
assertNotNull(v);
199246
}
200247

201248
@Test
@@ -274,6 +321,51 @@ public void testGoodTrack() {
274321
verifyZeroInteractions(logger);
275322
}
276323

324+
@Test
325+
public void testBadTrackWithListener() {
326+
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely,
327+
logger);
328+
329+
final boolean[] numberOfCalls = new boolean[1];
330+
numberOfCalls[0]= false;
331+
332+
int notificationId = optimizelyClient.getNotificationCenter().addNotification(NotificationCenter.NotificationType.Activate,
333+
new TrackNotificationListener() {
334+
@Override
335+
public void onTrack(String eventKey, String userId, Map<String, String> attributes, Map<String, ?> eventTags, LogEvent event) {
336+
numberOfCalls[0] = true;
337+
}
338+
});
339+
optimizelyClient.track("test_event", "userId");
340+
assertTrue(notificationId <= 0);
341+
assertFalse(optimizelyClient.getNotificationCenter().removeNotification(notificationId));
342+
assertEquals(false, numberOfCalls[0]);
343+
verifyZeroInteractions(logger);
344+
345+
}
346+
347+
@Test
348+
public void testGoodTrackWithListener() {
349+
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely,
350+
logger);
351+
352+
final boolean[] numberOfCalls = new boolean[1];
353+
numberOfCalls[0]= false;
354+
355+
int notificationId = optimizelyClient.getNotificationCenter().addNotification(NotificationCenter.NotificationType.Track,
356+
new TrackNotificationListener() {
357+
@Override
358+
public void onTrack(String eventKey, String userId, Map<String, String> attributes, Map<String, ?> eventTags, LogEvent event) {
359+
numberOfCalls[0] = true;
360+
}
361+
});
362+
optimizelyClient.track("test_event", "1");
363+
assertTrue(notificationId > 0);
364+
assertTrue(optimizelyClient.getNotificationCenter().removeNotification(notificationId));
365+
assertEquals(true, numberOfCalls[0]);
366+
verifyZeroInteractions(logger);
367+
}
368+
277369
@Test
278370
public void testGoodTrackBucketing() {
279371
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely, logger);
@@ -635,7 +727,6 @@ public void testGoodGetVariationBucketingId() {
635727
attributes.put(DecisionService.BUCKETING_ATTRIBUTE, bucketingId);
636728
Variation v = optimizelyClient.getVariation("android_experiment_key", "userId", attributes);
637729
verify(bucketer).bucket(experiment, bucketingId);
638-
assertNotNull(v);
639730
}
640731

641732
@Test

0 commit comments

Comments
 (0)