Skip to content

Commit 90af1f2

Browse files
committed
Add ttl_shouldDisplayNotificationWithNoTTLandSentTime test
* Test HMS notification with no TTL and sentTime
1 parent de3d403 commit 90af1f2

File tree

4 files changed

+63
-0
lines changed

4 files changed

+63
-0
lines changed

OneSignalSDK/unittest/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ public static class InAppMessageTable extends OneSignalDbContract.InAppMessageTa
225225
}
226226

227227
public static class OSNotificationRestoreWorkManager extends com.onesignal.OSNotificationRestoreWorkManager {
228+
public static int getDEFAULT_TTL_IF_NOT_IN_PAYLOAD() {
229+
return DEFAULT_TTL_IF_NOT_IN_PAYLOAD;
230+
}
228231
}
229232

230233
public static class OSNotificationGenerationJob extends com.onesignal.OSNotificationGenerationJob {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.onesignal;
2+
3+
import android.content.Context;
4+
5+
import androidx.annotation.NonNull;
6+
import androidx.annotation.Nullable;
7+
8+
import org.robolectric.annotation.Implementation;
9+
import org.robolectric.annotation.Implements;
10+
11+
@Implements(NotificationPayloadProcessorHMS.class)
12+
public class ShadowHmsNotificationPayloadProcessor {
13+
14+
private static @Nullable
15+
String messageData;
16+
17+
public static void resetStatics() {
18+
messageData = null;
19+
}
20+
21+
@Implementation
22+
public static void processDataMessageReceived(@NonNull final Context context, @Nullable String data) {
23+
messageData = data;
24+
}
25+
26+
@Nullable
27+
public static String getMessageData() {
28+
return messageData;
29+
}
30+
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/HMSDataMessageReceivedIntegrationTestsRunner.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
import android.annotation.SuppressLint;
44
import android.app.Activity;
55
import android.os.Bundle;
6+
import android.util.Log;
67

78
import com.huawei.hms.push.RemoteMessage;
89
import com.onesignal.MockOSTimeImpl;
10+
import com.onesignal.OneSignal;
11+
import com.onesignal.OneSignalPackagePrivateHelper;
912
import com.onesignal.OneSignalPackagePrivateHelper.NotificationPayloadProcessorHMS;
1013
import com.onesignal.ShadowBadgeCountUpdater;
1114
import com.onesignal.ShadowGenerateNotification;
15+
import com.onesignal.ShadowHmsNotificationPayloadProcessor;
1216
import com.onesignal.ShadowHmsRemoteMessage;
1317
import com.onesignal.ShadowNotificationManagerCompat;
1418
import com.onesignal.ShadowOSUtils;
@@ -33,6 +37,8 @@
3337

3438
import java.util.UUID;
3539

40+
import static com.onesignal.OneSignalHmsEventBridge.HMS_SENT_TIME_KEY;
41+
import static com.onesignal.OneSignalHmsEventBridge.HMS_TTL_KEY;
3642
import static com.onesignal.OneSignalPackagePrivateHelper.HMSEventBridge_onMessageReceive;
3743
import static com.onesignal.OneSignalPackagePrivateHelper.HMSProcessor_processDataMessageReceived;
3844
import static com.onesignal.OneSignalPackagePrivateHelper.OSNotificationFormatHelper.PAYLOAD_OS_NOTIFICATION_ID;
@@ -138,6 +144,28 @@ public void ttl_shouldNotDisplayNotification() throws Exception {
138144
assertEquals(0, ShadowBadgeCountUpdater.lastCount);
139145
}
140146

147+
@Test
148+
@Config(shadows = { ShadowGenerateNotification.class, ShadowHmsRemoteMessage.class, ShadowBadgeCountUpdater.class, ShadowHmsNotificationPayloadProcessor.class })
149+
public void ttl_shouldDisplayNotificationWithNoTTLandSentTime() throws Exception {
150+
blankActivityController.pause();
151+
152+
long sentTime = 1_635_971_895_940L;
153+
154+
time.setMockedTime(sentTime * 1_000);
155+
long setSentTime = time.getCurrentTimeMillis();
156+
157+
ShadowHmsRemoteMessage.data = helperBasicOSPayload();
158+
159+
HMSEventBridge_onMessageReceive(blankActivity, new RemoteMessage(new Bundle()));
160+
threadAndTaskWait();
161+
162+
String messageData = ShadowHmsNotificationPayloadProcessor.getMessageData();
163+
JSONObject jsonObject = new JSONObject(messageData);
164+
165+
assertEquals(OneSignalPackagePrivateHelper.OSNotificationRestoreWorkManager.getDEFAULT_TTL_IF_NOT_IN_PAYLOAD(), jsonObject.getInt(HMS_TTL_KEY));
166+
assertEquals(setSentTime, jsonObject.getLong(HMS_SENT_TIME_KEY));
167+
}
168+
141169
// NOTE: More tests can be added but they would be duplicated with GenerateNotificationRunner
142170
// In 4.0.0 or later these should be written in a reusable way between HMS, FCM, and ADM
143171
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/TestHelpers.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.onesignal.ShadowGoogleApiClientCompatProxy;
3636
import com.onesignal.ShadowHMSFusedLocationProviderClient;
3737
import com.onesignal.ShadowHmsInstanceId;
38+
import com.onesignal.ShadowHmsNotificationPayloadProcessor;
3839
import com.onesignal.ShadowNotificationManagerCompat;
3940
import com.onesignal.ShadowNotificationReceivedEvent;
4041
import com.onesignal.ShadowOSUtils;
@@ -130,6 +131,7 @@ static void beforeTestInitAndCleanup() throws Exception {
130131
ShadowNotificationReceivedEvent.resetStatics();
131132
ShadowOneSignalNotificationManager.resetStatics();
132133
ShadowBadgeCountUpdater.resetStatics();
134+
ShadowHmsNotificationPayloadProcessor.resetStatics();
133135
ShadowFocusHandler.Companion.resetStatics();
134136

135137
lastException = null;

0 commit comments

Comments
 (0)