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 fa501089f2
commit 89213445b9
2 changed files with 18 additions and 14 deletions

View File

@ -1,6 +1,7 @@
package app.closer.notifications
import android.content.Context
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import app.closer.core.navigation.AppRoute
import app.closer.domain.repository.AppSettings
@ -8,8 +9,9 @@ import app.closer.domain.repository.SettingsRepository
import io.mockk.coEvery
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkConstructor
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.unmockkAll
import io.mockk.verify
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
@ -25,6 +27,7 @@ class PartnerNotificationManagerTest {
private val settingsRepository = mockk<SettingsRepository>()
private val quietHoursManager = mockk<QuietHoursManager>()
private val rateLimiter = mockk<NotificationRateLimiter>(relaxed = true)
private val notificationManagerCompat = mockk<NotificationManagerCompat>(relaxed = true)
private lateinit var manager: PartnerNotificationManager
@ -39,18 +42,29 @@ class PartnerNotificationManagerTest {
every { quietHoursManager.isInQuietHours(any(), any()) } returns false
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)
}
@After
fun tearDown() {
unmockkStatic(NotificationManagerCompat::from)
unmockkAll()
}
@Test
fun `show records rate limit when enabled`() = runTest {
enableNotificationManager()
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
@ -90,8 +104,6 @@ class PartnerNotificationManagerTest {
@Test
fun `handleRemote maps known FCM types to local types`() = runTest {
enableNotificationManager()
manager.handleRemote("reveal_ready", "couple_1", PartnerNotificationPayload(questionId = "q1"))
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
@ -155,8 +167,6 @@ class PartnerNotificationManagerTest {
)
)
enableNotificationManager()
manager.show(PartnerNotificationType.PARTNER_ANSWERED, "couple_1")
verify { rateLimiter.record(NotificationRateLimiter.Type.PARTNER_TRIGGER) }
@ -175,10 +185,4 @@ class PartnerNotificationManagerTest {
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
}
}