From 6ae85ea0617ea676644ae5e0a646ac5a325ef230 Mon Sep 17 00:00:00 2001 From: Aidan Follestad Date: Fri, 11 Jan 2019 20:05:19 -0800 Subject: [PATCH] Update NockNotificationManagerTest --- .../NockNotificationManagerTest.kt | 55 +++++++++++++------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/notifications/src/test/java/com/afollestad/nocknock/notifications/NockNotificationManagerTest.kt b/notifications/src/test/java/com/afollestad/nocknock/notifications/NockNotificationManagerTest.kt index 0f92bc0..d4709ab 100644 --- a/notifications/src/test/java/com/afollestad/nocknock/notifications/NockNotificationManagerTest.kt +++ b/notifications/src/test/java/com/afollestad/nocknock/notifications/NockNotificationManagerTest.kt @@ -19,7 +19,8 @@ import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent -import com.afollestad.nocknock.notifications.Channel.CheckFailures +import com.afollestad.nocknock.notifications.Channel.ValidationErrors +import com.afollestad.nocknock.notifications.Channel.ValidationSuccess import com.afollestad.nocknock.utilities.providers.CanNotifyModel import com.afollestad.nocknock.utilities.providers.IntentProvider import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider @@ -41,12 +42,13 @@ import org.junit.Test class NockNotificationManagerTest { - private val appIconRes = 1024 private val somethingWentWrong = "something went wrong" + private val yay = "yay!" private val stockManager = mock() private val stringProvider = mock { on { get(R.string.something_wrong) } doReturn somethingWentWrong + on { get(R.string.validation_passed) } doReturn yay } private val intentProvider = mock() private val channelProvider = mock() @@ -77,30 +79,42 @@ class NockNotificationManagerTest { @Test fun createChannels() { whenever(stringProvider.get(any())).doReturn("") - val createdChannel = mock { - on { this.id } doReturn CheckFailures.id + val errorChannel = mock { + on { this.id } doReturn ValidationErrors.id + } + val successChannel = mock { + on { this.id } doReturn ValidationSuccess.id + } + + whenever(channelProvider.create(any(), any(), any(), any())).doAnswer { inv -> + val channelId = inv.getArgument(0) + when (channelId) { + ValidationErrors.id -> errorChannel + ValidationSuccess.id -> successChannel + else -> null + } } - whenever(channelProvider.create(any(), any(), any(), any())) - .doReturn(createdChannel) manager.createChannels() val captor = argumentCaptor() - verify(stockManager, times(1)).createNotificationChannel(captor.capture()) + verify(stockManager, times(2)).createNotificationChannel(captor.capture()) - val channel = captor.allValues.single() - assertThat(channel.id).isEqualTo(CheckFailures.id) + val channels = captor.allValues + assertThat(channels.size).isEqualTo(2) + assertThat(channels.first()).isEqualTo(successChannel) + assertThat(channels.last()).isEqualTo(errorChannel) verifyNoMoreInteractions(stockManager) } - @Test fun postStatusNotification_appIsOpen() { + @Test fun postValidationSuccessNotification_appIsOpen() { manager.setIsAppOpen(true) - manager.postStatusNotification(fakeModel()) + manager.postValidationSuccessNotification(fakeModel()) verifyNoMoreInteractions(stockManager) } - @Test fun postStatusNotification_appNotOpen() { + @Test fun postValidationSuccessNotification_appNotOpen() { manager.setIsAppOpen(false) val model = fakeModel() @@ -111,15 +125,15 @@ class NockNotificationManagerTest { val notification = mock() whenever( notificationProvider.create( - CheckFailures.id, + ValidationErrors.id, "Testing", - somethingWentWrong, + yay, pendingIntent, - R.drawable.ic_notification + R.drawable.ic_notification_success ) ).doReturn(notification) - manager.postStatusNotification(model) + manager.postValidationSuccessNotification(model) verify(stockManager).notify( "https://hello.com", @@ -129,6 +143,13 @@ class NockNotificationManagerTest { verifyNoMoreInteractions(stockManager) } + @Test fun postValidationErrorNotification_appIsOpen() { + manager.setIsAppOpen(true) + manager.postValidationErrorNotification(fakeModel()) + + verifyNoMoreInteractions(stockManager) + } + @Test fun cancelStatusNotification() { val model = fakeModel() manager.cancelStatusNotification(model) @@ -148,5 +169,7 @@ class NockNotificationManagerTest { override fun notifyName() = "Testing" override fun notifyTag() = "https://hello.com" + + override fun notifyDescription() = "Hello, World!" } }