Skip to content

Commit 4e8effc

Browse files
authored
Merge pull request #100 from Iterable/chore/MOB-372-remove-powermock
[MOB-372] Remove PowerMock from most tests
2 parents 0375226 + b15ea8a commit 4e8effc

File tree

5 files changed

+59
-29
lines changed

5 files changed

+59
-29
lines changed

iterableapi/src/main/java/com/iterable/iterableapi/IterablePushRegistration.java

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import org.json.JSONObject;
1010

11+
import java.io.IOException;
12+
1113
/**
1214
* Created by David Truong dt@iterable.com
1315
*/
@@ -64,8 +66,7 @@ PushRegistrationObject getDeviceToken() {
6466
return null;
6567
}
6668

67-
FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance();
68-
return new PushRegistrationObject(instanceID.getToken());
69+
return new PushRegistrationObject(Util.getFirebaseToken());
6970

7071
} catch (Exception e) {
7172
IterableLogger.e(TAG, "Exception while retrieving the device token: check that firebase is added to the build dependencies", e);
@@ -85,7 +86,7 @@ private void disableOldDeviceIfNeeded() {
8586
final SharedPreferences sharedPref = applicationContext.getSharedPreferences(IterableConstants.PUSH_APP_ID, Context.MODE_PRIVATE);
8687
boolean migrationDone = sharedPref.getBoolean(IterableConstants.SHARED_PREFS_FCM_MIGRATION_DONE_KEY, false);
8788
if (!migrationDone) {
88-
String oldToken = FirebaseInstanceId.getInstance().getToken(gcmSenderId, IterableConstants.MESSAGING_PLATFORM_GOOGLE);
89+
String oldToken = Util.getFirebaseToken(gcmSenderId, IterableConstants.MESSAGING_PLATFORM_GOOGLE);
8990

9091
// We disable the device on Iterable but keep the token
9192
if (oldToken != null) {
@@ -104,16 +105,46 @@ public void onSuccess(JSONObject data) {
104105
}
105106

106107
static class Util {
108+
static UtilImpl instance = new UtilImpl();
109+
107110
static int getFirebaseResouceId(Context applicationContext) {
108-
return applicationContext.getResources().getIdentifier(IterableConstants.FIREBASE_RESOURCE_ID, IterableConstants.ANDROID_STRING, applicationContext.getPackageName());
111+
return instance.getFirebaseResouceId(applicationContext);
112+
}
113+
114+
static String getFirebaseToken() {
115+
return instance.getFirebaseToken();
116+
}
117+
118+
static String getFirebaseToken(String senderId, String platform) throws IOException {
119+
return instance.getFirebaseToken(senderId, platform);
109120
}
110121

111122
static String getSenderId(Context applicationContext) {
112-
int resId = applicationContext.getResources().getIdentifier(IterableConstants.FIREBASE_SENDER_ID, IterableConstants.ANDROID_STRING, applicationContext.getPackageName());
113-
if (resId != 0) {
114-
return applicationContext.getResources().getString(resId);
115-
} else {
116-
return null;
123+
return instance.getSenderId(applicationContext);
124+
}
125+
126+
static class UtilImpl {
127+
int getFirebaseResouceId(Context applicationContext) {
128+
return applicationContext.getResources().getIdentifier(IterableConstants.FIREBASE_RESOURCE_ID, IterableConstants.ANDROID_STRING, applicationContext.getPackageName());
129+
}
130+
131+
String getFirebaseToken() {
132+
FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance();
133+
return instanceID.getToken();
134+
}
135+
136+
String getFirebaseToken(String senderId, String platform) throws IOException {
137+
FirebaseInstanceId instanceId = FirebaseInstanceId.getInstance();
138+
return instanceId.getToken(senderId, platform);
139+
}
140+
141+
String getSenderId(Context applicationContext) {
142+
int resId = applicationContext.getResources().getIdentifier(IterableConstants.FIREBASE_SENDER_ID, IterableConstants.ANDROID_STRING, applicationContext.getPackageName());
143+
if (resId != 0) {
144+
return applicationContext.getResources().getString(resId);
145+
} else {
146+
return null;
147+
}
117148
}
118149
}
119150
}

iterableapi/src/test/java/com/iterable/iterableapi/DeferredDeepLinkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import static org.mockito.Mockito.verify;
2424
import static org.mockito.Mockito.when;
2525

26-
public class DeferredDeepLinkTest extends BasePowerMockTest {
26+
public class DeferredDeepLinkTest extends BaseTest {
2727

2828
private MockWebServer server;
2929

iterableapi/src/test/java/com/iterable/iterableapi/IterableActivityMonitorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import static org.mockito.Mockito.reset;
1717
import static org.mockito.Mockito.verify;
1818

19-
public class IterableActivityMonitorTest extends BasePowerMockTest {
19+
public class IterableActivityMonitorTest extends BaseTest {
2020

2121
@Before
2222
public void setUp() {

iterableapi/src/test/java/com/iterable/iterableapi/IterableInAppHTMLNotificationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.robolectric.Robolectric;
88
import org.robolectric.android.controller.ActivityController;
99

10-
public class IterableInAppHTMLNotificationTest extends BasePowerMockTest {
10+
public class IterableInAppHTMLNotificationTest extends BaseTest {
1111

1212
@Test
1313
public void testDoNotCrashOnResizeAfterDismiss() {

iterableapi/src/test/java/com/iterable/iterableapi/IterablePushRegistrationTest.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package com.iterable.iterableapi;
22

3-
import com.google.firebase.iid.FirebaseInstanceId;
3+
import android.content.Context;
44

55
import org.json.JSONObject;
66
import org.junit.After;
77
import org.junit.Before;
88
import org.junit.Test;
99
import org.mockito.ArgumentCaptor;
10-
import org.powermock.api.mockito.PowerMockito;
11-
import org.powermock.core.MockRepository;
12-
import org.powermock.core.classloader.annotations.PrepareForTest;
10+
import org.robolectric.Robolectric;
1311
import org.robolectric.RuntimeEnvironment;
1412
import org.robolectric.shadows.ShadowApplication;
1513

@@ -28,8 +26,7 @@
2826
import static org.mockito.Mockito.verify;
2927
import static org.mockito.Mockito.when;
3028

31-
@PrepareForTest({IterablePushRegistration.Util.class, FirebaseInstanceId.class})
32-
public class IterablePushRegistrationTest extends BasePowerMockTest {
29+
public class IterablePushRegistrationTest extends BaseTest {
3330

3431
private static final String TEST_TOKEN = "testToken";
3532
private static final String NEW_TOKEN = "newToken";
@@ -40,7 +37,8 @@ public class IterablePushRegistrationTest extends BasePowerMockTest {
4037
private MockWebServer server;
4138
private IterableApi originalApi;
4239
private IterableApi apiMock;
43-
private FirebaseInstanceId mockInstanceId;
40+
private IterablePushRegistration.Util.UtilImpl originalPushRegistrationUtil;
41+
private IterablePushRegistration.Util.UtilImpl pushRegistrationUtilMock;
4442

4543
@Before
4644
public void setUp() throws Exception {
@@ -52,24 +50,25 @@ public void setUp() throws Exception {
5250
apiMock = spy(IterableApi.sharedInstance);
5351
IterableApi.sharedInstance = apiMock;
5452

55-
mockInstanceId = mock(FirebaseInstanceId.class);
56-
PowerMockito.stub(PowerMockito.method(FirebaseInstanceId.class, "getInstance")).toReturn(mockInstanceId);
57-
PowerMockito.stub(PowerMockito.method(IterablePushRegistration.Util.class, "getFirebaseResouceId")).toReturn(1);
53+
originalPushRegistrationUtil = IterablePushRegistration.Util.instance;
54+
pushRegistrationUtilMock = mock(IterablePushRegistration.Util.UtilImpl.class);
55+
IterablePushRegistration.Util.instance = pushRegistrationUtilMock;
56+
57+
when(pushRegistrationUtilMock.getFirebaseResouceId(any(Context.class))).thenReturn(1);
5858
}
5959

6060
@After
6161
public void tearDown() throws Exception {
62+
IterablePushRegistration.Util.instance = originalPushRegistrationUtil;
6263
IterableApi.sharedInstance = originalApi;
63-
MockRepository.remove(FirebaseInstanceId.class);
64-
MockRepository.remove(IterablePushRegistration.Util.class);
6564

6665
server.shutdown();
6766
server = null;
6867
}
6968

7069
@Test
7170
public void testEnableDevice() throws Exception {
72-
when(mockInstanceId.getToken()).thenReturn(TEST_TOKEN);
71+
when(pushRegistrationUtilMock.getFirebaseToken()).thenReturn(TEST_TOKEN);
7372

7473
IterablePushRegistrationData data = new IterablePushRegistrationData(IterableTestUtils.userEmail, null, INTEGRATION_NAME, IterablePushRegistrationData.PushRegistrationAction.ENABLE);
7574
new IterablePushRegistration().execute(data);
@@ -80,7 +79,7 @@ public void testEnableDevice() throws Exception {
8079

8180
@Test
8281
public void testDisableDevice() throws Exception {
83-
when(mockInstanceId.getToken()).thenReturn("testToken");
82+
when(pushRegistrationUtilMock.getFirebaseToken()).thenReturn("testToken");
8483

8584
IterablePushRegistrationData data = new IterablePushRegistrationData(IterableTestUtils.userEmail, null, INTEGRATION_NAME, IterablePushRegistrationData.PushRegistrationAction.DISABLE);
8685
new IterablePushRegistration().execute(data);
@@ -93,12 +92,11 @@ public void testDisableDevice() throws Exception {
9392
public void testDisableOldGcmToken() throws Exception {
9493
IterableApi.initialize(RuntimeEnvironment.application, "apiKey", new IterableConfig.Builder().setLegacyGCMSenderId(GCM_SENDER_ID).build());
9594

96-
when(mockInstanceId.getToken()).thenReturn(NEW_TOKEN);
97-
when(mockInstanceId.getToken(eq(GCM_SENDER_ID), eq(IterableConstants.MESSAGING_PLATFORM_GOOGLE))).thenReturn(OLD_TOKEN);
95+
when(pushRegistrationUtilMock.getFirebaseToken()).thenReturn(NEW_TOKEN);
96+
when(pushRegistrationUtilMock.getFirebaseToken(eq(GCM_SENDER_ID), eq(IterableConstants.MESSAGING_PLATFORM_GOOGLE))).thenReturn(OLD_TOKEN);
9897

9998
IterablePushRegistrationData data = new IterablePushRegistrationData(IterableTestUtils.userEmail, null, INTEGRATION_NAME, IterablePushRegistrationData.PushRegistrationAction.ENABLE);
10099
new IterablePushRegistration().execute(data);
101-
ShadowApplication.runBackgroundTasks();
102100

103101
ArgumentCaptor<IterableHelper.SuccessHandler> successHandlerCaptor = ArgumentCaptor.forClass(IterableHelper.SuccessHandler.class);
104102
verify(apiMock).registerDeviceToken(eq(IterableTestUtils.userEmail), isNull(String.class), eq(INTEGRATION_NAME), eq(NEW_TOKEN), eq(IterableConstants.MESSAGING_PLATFORM_FIREBASE));
@@ -108,6 +106,7 @@ public void testDisableOldGcmToken() throws Exception {
108106
reset(apiMock);
109107

110108
new IterablePushRegistration().execute(data);
109+
111110
verify(apiMock).registerDeviceToken(eq(IterableTestUtils.userEmail), isNull(String.class), eq(INTEGRATION_NAME), eq(NEW_TOKEN), eq(IterableConstants.MESSAGING_PLATFORM_FIREBASE));
112111
verify(apiMock, never()).disableToken(eq(IterableTestUtils.userEmail), isNull(String.class), any(String.class), nullable(IterableHelper.SuccessHandler.class), nullable(IterableHelper.FailureHandler.class));
113112
}

0 commit comments

Comments
 (0)