11package com.onesignal.user.internal
22
33import com.onesignal.core.internal.language.ILanguageContext
4+ import com.onesignal.core.internal.preferences.IPreferencesService
45import com.onesignal.mocks.MockHelper
6+ import com.onesignal.user.internal.customEvents.CustomEventModelStore
57import com.onesignal.user.internal.subscriptions.ISubscriptionManager
68import com.onesignal.user.internal.subscriptions.SubscriptionList
79import io.kotest.core.spec.style.FunSpec
@@ -26,7 +28,7 @@ class UserManagerTests : FunSpec({
2628 every { languageContext.language = capture(languageSlot) } answers { }
2729
2830 val userManager =
29- UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), MockHelper .propertiesModelStore(), languageContext)
31+ UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), MockHelper .propertiesModelStore(), MockHelper .customEventModelStore(), languageContext)
3032
3133 // When
3234 userManager.setLanguage("new-language")
@@ -44,7 +46,7 @@ class UserManagerTests : FunSpec({
4446 }
4547
4648 val userManager =
47- UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext())
49+ UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .customEventModelStore(), MockHelper . languageContext())
4850
4951 // When
5052 val externalId = userManager.externalId
@@ -63,7 +65,7 @@ class UserManagerTests : FunSpec({
6365 }
6466
6567 val userManager =
66- UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext())
68+ UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .customEventModelStore(), MockHelper . languageContext())
6769
6870 // When
6971 val alias1 = userManager.aliases[" my-alias-key1" ]
@@ -102,7 +104,7 @@ class UserManagerTests : FunSpec({
102104 }
103105
104106 val userManager =
105- UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext())
107+ UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .customEventModelStore(), MockHelper . languageContext())
106108
107109 // When
108110 val tag1 = propertiesModelStore.model.tags[" my-tag-key1" ]
@@ -141,7 +143,7 @@ class UserManagerTests : FunSpec({
141143 it.tags[" my-tag-key1" ] = " my-tag-value1"
142144 }
143145
144- val userManager = UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext())
146+ val userManager = UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .customEventModelStore(), MockHelper . languageContext())
145147
146148 // When
147149 val tagSnapshot1 = userManager.getTags()
@@ -173,6 +175,7 @@ class UserManagerTests : FunSpec({
173175 mockSubscriptionManager,
174176 MockHelper .identityModelStore(),
175177 MockHelper .propertiesModelStore(),
178+ MockHelper .customEventModelStore(),
176179 MockHelper .languageContext(),
177180 )
178181
@@ -191,4 +194,33 @@ class UserManagerTests : FunSpec({
191194 verify(exactly = 1) { mockSubscriptionManager.addSmsSubscription("+15558675309") }
192195 verify(exactly = 1) { mockSubscriptionManager.removeSmsSubscription("+15558675309") }
193196 }
197+
198+ test("custom events are backed by the custom event model store") {
199+ // Given
200+ val customEventModelStore = CustomEventModelStore (mockk<IPreferencesService >())
201+
202+ val userManager =
203+ UserManager (mockk<ISubscriptionManager >(), MockHelper .identityModelStore(), MockHelper .propertiesModelStore(), customEventModelStore, MockHelper .languageContext())
204+
205+ val eventName = " eventName"
206+ val properties = mapOf(
207+ "key1" to "value1",
208+ "key2" to 2,
209+ "key3" to mapOf("key3-1" to "value-3-1"),
210+ "key4" to 5.123,
211+ )
212+
213+ // When
214+ userManager.trackEvent(
215+ eventName,
216+ properties,
217+ )
218+
219+ // Then
220+ val customEventList = customEventModelStore.list()
221+ customEventList.size shouldBe 1
222+ val event = customEventList.first()
223+ event.name shouldBe eventName
224+ event.properties shouldBe properties
225+ }
194226})
0 commit comments