X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fnotification%2FNewRemotePostHandlerTest.kt;h=805731d69e316a321ed0f79309fe444775796b30;hp=a86bbf1446c8849b1ae1dd0c478caaf79b948605;hb=5aaa1e1dc761fa0c8b6745b7b022c0a19d248c68;hpb=0dc7811a459455dd2b670eb1924df27f65c36a24 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/notification/NewRemotePostHandlerTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/notification/NewRemotePostHandlerTest.kt index a86bbf1..805731d 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/notification/NewRemotePostHandlerTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/notification/NewRemotePostHandlerTest.kt @@ -17,15 +17,15 @@ package net.pterodactylus.sone.web.notification -import com.google.common.eventbus.* import net.pterodactylus.sone.core.event.* import net.pterodactylus.sone.data.* +import net.pterodactylus.sone.data.Post.* +import net.pterodactylus.sone.data.impl.* import net.pterodactylus.sone.notify.* import net.pterodactylus.util.notify.* import net.pterodactylus.util.template.* import org.hamcrest.MatcherAssert.* import org.hamcrest.Matchers.* -import java.io.* import kotlin.test.* /** @@ -34,36 +34,64 @@ import kotlin.test.* @Suppress("UnstableApiUsage") class NewRemotePostHandlerTest { - private val eventBus = EventBus() - private val notificationManager = NotificationManager() private val notification = ListNotification("", "", Template()) - private val handler = NewRemotePostHandler(notificationManager, notification) + private val remotePostHandlerTest = NotificationHandlerTester { NewRemotePostHandler(it, notification) } - init { - eventBus.register(handler) + @Test + fun `handler adds remote post to new-post notification`() { + remotePostHandlerTest.sendEvent(NewPostFoundEvent(remotePost)) + assertThat(notification.elements, contains(remotePost)) + } + + @Test + fun `handler does not add local post to new-post notification`() { + remotePostHandlerTest.sendEvent(NewPostFoundEvent(localPost)) + assertThat(notification.elements, emptyIterable()) } @Test - fun `handler adds post to new-post notification`() { - eventBus.post(NewPostFoundEvent(post)) - assertThat(notification.elements, contains(post)) + fun `handler adds notification for remote post to notification manager`() { + remotePostHandlerTest.sendEvent(NewPostFoundEvent(remotePost)) + assertThat(remotePostHandlerTest.notifications, contains(notification)) } @Test - fun `handler adds notification to notification manager`() { - eventBus.post(NewPostFoundEvent(post)) - assertThat(notificationManager.notifications, contains(notification)) + fun `handler does not add notification for local post to notification manager`() { + remotePostHandlerTest.sendEvent(NewPostFoundEvent(localPost)) + assertThat(remotePostHandlerTest.notifications, emptyIterable()) } @Test fun `handler does not add notification to notification manager during first start`() { - notificationManager.addNotification(object : AbstractNotification("first-start-notification") { - override fun render(writer: Writer?) = Unit - }) - eventBus.post(NewPostFoundEvent(post)) - assertThat(notificationManager.notifications, not(hasItem(notification))) + remotePostHandlerTest.firstStart() + remotePostHandlerTest.sendEvent(NewPostFoundEvent(remotePost)) + assertThat(remotePostHandlerTest.notifications, not(hasItem(notification))) + } + + @Test + fun `handler removes post from notification if post is removed`() { + notification.add(remotePost) + remotePostHandlerTest.sendEvent(PostRemovedEvent(remotePost)) + assertThat(notification.elements, not(hasItem(remotePost))) + } + + @Test + fun `handler removes post from notification if post is marked as known`() { + notification.add(remotePost) + remotePostHandlerTest.sendEvent(MarkPostKnownEvent(remotePost)) + assertThat(notification.elements, not(hasItem(remotePost))) } } -private val post: Post = Post.EmptyPost("post") +private val remoteSone: Sone = IdOnlySone("remote-sone") +private val remotePost: Post = object : EmptyPost("remote-post") { + override fun getSone() = remoteSone +} + +private val localSone: Sone = object : IdOnlySone("local-sone") { + override fun isLocal() = true +} +private val localPost: Post = object : EmptyPost("local-post") { + override fun getSone() = localSone +}