@@ -26,6 +26,59 @@ import io.mockk.spyk
26
26
import org.json.JSONArray
27
27
import org.json.JSONObject
28
28
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
+ }
29
82
30
83
@RobolectricTest
31
84
class NotificationLifecycleServiceTests : FunSpec ({
@@ -36,41 +89,9 @@ class NotificationLifecycleServiceTests : FunSpec({
36
89
37
90
test("Fires openDestinationActivity") {
38
91
// 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
74
95
75
96
// When
76
97
val payload =
0 commit comments