fix: add coEvery import and re-set settings flow in PartnerNotificationManagerTest (batch v1.0.10)
This commit is contained in:
parent
6c84a7cdef
commit
0e8952cab3
|
|
@ -1,6 +1,7 @@
|
||||||
package app.closer.notifications
|
package app.closer.notifications
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import app.closer.core.navigation.AppRoute
|
import app.closer.core.navigation.AppRoute
|
||||||
import app.closer.domain.repository.AppSettings
|
import app.closer.domain.repository.AppSettings
|
||||||
|
|
@ -8,8 +9,9 @@ import app.closer.domain.repository.SettingsRepository
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
|
import io.mockk.mockkConstructor
|
||||||
import io.mockk.mockkStatic
|
import io.mockk.mockkStatic
|
||||||
import io.mockk.unmockkStatic
|
import io.mockk.unmockkAll
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
|
|
@ -25,6 +27,7 @@ class PartnerNotificationManagerTest {
|
||||||
private val settingsRepository = mockk<SettingsRepository>()
|
private val settingsRepository = mockk<SettingsRepository>()
|
||||||
private val quietHoursManager = mockk<QuietHoursManager>()
|
private val quietHoursManager = mockk<QuietHoursManager>()
|
||||||
private val rateLimiter = mockk<NotificationRateLimiter>(relaxed = true)
|
private val rateLimiter = mockk<NotificationRateLimiter>(relaxed = true)
|
||||||
|
private val notificationManagerCompat = mockk<NotificationManagerCompat>(relaxed = true)
|
||||||
|
|
||||||
private lateinit var manager: PartnerNotificationManager
|
private lateinit var manager: PartnerNotificationManager
|
||||||
|
|
||||||
|
|
@ -39,18 +42,29 @@ class PartnerNotificationManagerTest {
|
||||||
every { quietHoursManager.isInQuietHours(any(), any()) } returns false
|
every { quietHoursManager.isInQuietHours(any(), any()) } returns false
|
||||||
every { rateLimiter.canSend(any()) } returns true
|
every { rateLimiter.canSend(any()) } returns true
|
||||||
|
|
||||||
|
mockkStatic(NotificationManagerCompat::from)
|
||||||
|
every { NotificationManagerCompat.from(context) } returns notificationManagerCompat
|
||||||
|
every { notificationManagerCompat.areNotificationsEnabled() } returns true
|
||||||
|
|
||||||
|
mockkConstructor(NotificationCompat.Builder::class)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setSmallIcon(any<Int>()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setContentTitle(any()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setContentText(any()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setAutoCancel(any()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setContentIntent(any()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().setCategory(any()) } returns mockk(relaxed = true)
|
||||||
|
every { anyConstructed<NotificationCompat.Builder>().build() } returns mockk(relaxed = true)
|
||||||
|
|
||||||
manager = PartnerNotificationManager(context, settingsRepository, quietHoursManager, rateLimiter)
|
manager = PartnerNotificationManager(context, settingsRepository, quietHoursManager, rateLimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
fun tearDown() {
|
fun tearDown() {
|
||||||
unmockkStatic(NotificationManagerCompat::from)
|
unmockkAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `show records rate limit when enabled`() = runTest {
|
fun `show records rate limit when enabled`() = runTest {
|
||||||
enableNotificationManager()
|
|
||||||
|
|
||||||
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
|
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
|
||||||
|
|
||||||
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
||||||
|
|
@ -90,8 +104,6 @@ class PartnerNotificationManagerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `handleRemote maps known FCM types to local types`() = runTest {
|
fun `handleRemote maps known FCM types to local types`() = runTest {
|
||||||
enableNotificationManager()
|
|
||||||
|
|
||||||
manager.handleRemote("reveal_ready", "couple_1", PartnerNotificationPayload(questionId = "q1"))
|
manager.handleRemote("reveal_ready", "couple_1", PartnerNotificationPayload(questionId = "q1"))
|
||||||
|
|
||||||
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
||||||
|
|
@ -155,8 +167,6 @@ class PartnerNotificationManagerTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
enableNotificationManager()
|
|
||||||
|
|
||||||
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
|
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
|
||||||
|
|
||||||
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
|
||||||
|
|
@ -175,10 +185,4 @@ class PartnerNotificationManagerTest {
|
||||||
|
|
||||||
verify(exactly = 0) { rateLimiter.record(any()) }
|
verify(exactly = 0) { rateLimiter.record(any()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun enableNotificationManager() {
|
|
||||||
mockkStatic(NotificationManagerCompat::from)
|
|
||||||
every { NotificationManagerCompat.from(context).areNotificationsEnabled() } returns true
|
|
||||||
every { NotificationManagerCompat.from(context).notify(any(), any()) } returns Unit
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue