fix: add coEvery import and re-set settings flow in PartnerNotificationManagerTest (batch v1.0.10)

This commit is contained in:
null 2026-06-19 22:52:27 -05:00
parent 6c84a7cdef
commit 0e8952cab3
2 changed files with 18 additions and 14 deletions

View File

@ -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
}
} }