11package com.onesignal.user.internal
22
3+ import com.onesignal.common.TimeUtils
34import com.onesignal.core.internal.language.ILanguageContext
45import com.onesignal.mocks.MockHelper
56import com.onesignal.user.internal.subscriptions.ISubscriptionManager
@@ -10,8 +11,10 @@ import io.kotest.matchers.shouldNotBe
1011import io.mockk.every
1112import io.mockk.just
1213import io.mockk.mockk
14+ import io.mockk.mockkObject
1315import io.mockk.runs
1416import io.mockk.slot
17+ import io.mockk.unmockkObject
1518import io.mockk.verify
1619
1720class UserManagerTests : FunSpec ({
@@ -26,7 +29,7 @@ class UserManagerTests : FunSpec({
2629 every { languageContext.language = capture(languageSlot) } answers { }
2730
2831 val userManager =
29- UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), MockHelper .propertiesModelStore(), languageContext)
32+ UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), MockHelper .propertiesModelStore(), languageContext, MockHelper .applicationService() )
3033
3134 // When
3235 userManager.setLanguage("new-language")
@@ -44,7 +47,7 @@ class UserManagerTests : FunSpec({
4447 }
4548
4649 val userManager =
47- UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext())
50+ UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext(), MockHelper .applicationService() )
4851
4952 // When
5053 val externalId = userManager.externalId
@@ -63,7 +66,7 @@ class UserManagerTests : FunSpec({
6366 }
6467
6568 val userManager =
66- UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext())
69+ UserManager (mockSubscriptionManager, identityModelStore, MockHelper .propertiesModelStore(), MockHelper .languageContext(), MockHelper .applicationService() )
6770
6871 // When
6972 val alias1 = userManager.aliases[" my-alias-key1" ]
@@ -102,7 +105,7 @@ class UserManagerTests : FunSpec({
102105 }
103106
104107 val userManager =
105- UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext())
108+ UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext(), MockHelper .applicationService() )
106109
107110 // When
108111 val tag1 = propertiesModelStore.model.tags[" my-tag-key1" ]
@@ -141,7 +144,7 @@ class UserManagerTests : FunSpec({
141144 it.tags[" my-tag-key1" ] = " my-tag-value1"
142145 }
143146
144- val userManager = UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext())
147+ val userManager = UserManager (mockSubscriptionManager, MockHelper .identityModelStore(), propertiesModelStore, MockHelper .languageContext(), MockHelper .applicationService() )
145148
146149 // When
147150 val tagSnapshot1 = userManager.getTags()
@@ -174,6 +177,7 @@ class UserManagerTests : FunSpec({
174177 MockHelper .identityModelStore(),
175178 MockHelper .propertiesModelStore(),
176179 MockHelper .languageContext(),
180+ MockHelper .applicationService(),
177181 )
178182
179183 // When
@@ -191,4 +195,36 @@ class UserManagerTests : FunSpec({
191195 verify(exactly = 1) { mockSubscriptionManager.addSmsSubscription("+15558675309") }
192196 verify(exactly = 1) { mockSubscriptionManager.removeSmsSubscription("+15558675309") }
193197 }
198+
199+ test("onFocus updates timezone") {
200+ // Given
201+ val mockTimeZone = " Europe/Foo"
202+ mockkObject(TimeUtils )
203+ every { TimeUtils .getTimeZoneId() } returns mockTimeZone
204+
205+ val mockPropertiesModelStore = MockHelper .propertiesModelStore()
206+
207+ val userManager =
208+ UserManager (
209+ mockk<ISubscriptionManager >(),
210+ MockHelper .identityModelStore(),
211+ mockPropertiesModelStore,
212+ MockHelper .languageContext(),
213+ MockHelper .applicationService(),
214+ )
215+
216+ val propertiesModel = mockPropertiesModelStore.model
217+ propertiesModel.timezone shouldNotBe mockTimeZone
218+
219+ try {
220+ // When
221+ userManager.onFocus(firedOnSubscribe = false)
222+
223+ // Then
224+ propertiesModel.timezone shouldBe mockTimeZone
225+ } finally {
226+ // Clean up the mock
227+ unmockkObject(TimeUtils )
228+ }
229+ }
194230})
0 commit comments