Skip to content

Commit ef2286a

Browse files
committed
refactor: move mocks to a mock object for NotificaationLifecycleServiceTests
1 parent ed2e876 commit ef2286a

File tree

1 file changed

+56
-35
lines changed

1 file changed

+56
-35
lines changed

OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/lifecycle/NotificationLifecycleServiceTests.kt

Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,59 @@ import io.mockk.spyk
2626
import org.json.JSONArray
2727
import org.json.JSONObject
2828
import org.robolectric.Robolectric
29+
import org.robolectric.android.controller.ActivityController
30+
31+
private class Mocks {
32+
val context = ApplicationProvider.getApplicationContext<Context>()
33+
val applicationService =
34+
run {
35+
val applicationService = ApplicationService()
36+
applicationService.start(context)
37+
applicationService
38+
}
39+
40+
val mockSubscriptionManager: ISubscriptionManager =
41+
run {
42+
val mockSubManager = mockk<ISubscriptionManager>()
43+
every { mockSubManager.subscriptions.push } returns
44+
mockk<IPushSubscription>().apply { every { id } returns "UUID1" }
45+
mockSubManager
46+
}
47+
48+
val notificationLifecycleService =
49+
spyk(
50+
NotificationLifecycleService(
51+
applicationService,
52+
MockHelper.time(0),
53+
MockHelper.configModelStore(),
54+
mockk<IInfluenceManager>().apply {
55+
every { onDirectInfluenceFromNotification(any()) } returns Unit
56+
},
57+
mockSubscriptionManager,
58+
mockk<IDeviceService>().apply {
59+
every { deviceType } returns IDeviceService.DeviceType.Android
60+
},
61+
mockk<INotificationBackendService>().apply {
62+
coEvery { updateNotificationAsOpened(any(), any(), any(), any()) } returns Unit
63+
},
64+
mockk<IReceiveReceiptWorkManager>(),
65+
mockk<IAnalyticsTracker>().apply {
66+
every { trackOpenedEvent(any(), any()) } returns Unit
67+
},
68+
),
69+
)
70+
71+
val activity: Activity =
72+
run {
73+
val activityController : ActivityController<Activity>
74+
Robolectric.buildActivity(Activity::class.java).use { controller ->
75+
controller.setup() // Moves Activity to RESUMED state
76+
activityController = controller
77+
}
78+
activityController.get()
79+
}
80+
81+
}
2982

3083
@RobolectricTest
3184
class NotificationLifecycleServiceTests : FunSpec({
@@ -36,41 +89,9 @@ class NotificationLifecycleServiceTests : FunSpec({
3689

3790
test("Fires openDestinationActivity") {
3891
// Given
39-
val context = ApplicationProvider.getApplicationContext<Context>()
40-
val applicationService = ApplicationService()
41-
applicationService.start(context)
42-
43-
val mockSubscriptionManager = mockk<ISubscriptionManager>()
44-
every { mockSubscriptionManager.subscriptions.push } returns
45-
mockk<IPushSubscription>().apply { every { id } returns "UUID1" }
46-
47-
val notificationLifecycleService =
48-
spyk(
49-
NotificationLifecycleService(
50-
applicationService,
51-
MockHelper.time(0),
52-
MockHelper.configModelStore(),
53-
mockk<IInfluenceManager>().apply {
54-
every { onDirectInfluenceFromNotification(any()) } returns Unit
55-
},
56-
mockSubscriptionManager,
57-
mockk<IDeviceService>().apply {
58-
every { deviceType } returns IDeviceService.DeviceType.Android
59-
},
60-
mockk<INotificationBackendService>().apply {
61-
coEvery { updateNotificationAsOpened(any(), any(), any(), any()) } returns Unit
62-
},
63-
mockk<IReceiveReceiptWorkManager>(),
64-
mockk<IAnalyticsTracker>().apply {
65-
every { trackOpenedEvent(any(), any()) } returns Unit
66-
},
67-
),
68-
)
69-
val activity: Activity
70-
Robolectric.buildActivity(Activity::class.java).use { controller ->
71-
controller.setup() // Moves Activity to RESUMED state
72-
activity = controller.get()
73-
}
92+
val mocks = Mocks()
93+
val notificationLifecycleService = mocks.notificationLifecycleService
94+
val activity = mocks.activity
7495

7596
// When
7697
val payload =

0 commit comments

Comments
 (0)