1 package net.pterodactylus.sone.notify
3 import com.google.inject.Guice
4 import net.pterodactylus.sone.test.createLocalSone
5 import net.pterodactylus.sone.test.createPost
6 import net.pterodactylus.sone.test.createPostReply
7 import net.pterodactylus.sone.test.verifySingletonInstance
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
13 * Unit test for [ReplyVisibilityFilterTest].
15 class ReplyVisibilityFilterTest {
17 private val replyVisibilityFilter = DefaultReplyVisibilityFilter(showAllPosts)
18 private val localSone = createLocalSone()
19 private val post = createPost()
22 fun `reply visibility filter is only created once`() {
23 val injector = Guice.createInjector()
24 injector.verifySingletonInstance<DefaultReplyVisibilityFilter>()
28 fun `reply is not visible if post is not visible`() {
29 val postReply = createPostReply(post = post)
30 val replyVisibilityFilter = DefaultReplyVisibilityFilter(showNoPosts)
31 assertThat(replyVisibilityFilter.isReplyVisible(null, postReply), equalTo(false))
35 fun `reply is not visible if post is not present`() {
36 val postReply = createPostReply(post = null)
37 assertThat(replyVisibilityFilter.isReplyVisible(null, postReply), equalTo(false))
41 fun `reply is not visible if it is from the future`() {
42 val postReply = createPostReply(post = post, time = System.currentTimeMillis() + 100000)
43 assertThat(replyVisibilityFilter.isReplyVisible(null, postReply), equalTo(false))
47 fun `reply is visible if it is not from the future`() {
48 val postReply = createPostReply(post = post)
49 assertThat(replyVisibilityFilter.isReplyVisible(null, postReply), equalTo(true))
53 fun `predicate correctly recognizes visible reply`() {
54 val postReply = createPostReply(post = post)
55 assertThat(replyVisibilityFilter.isVisible(localSone).test(postReply), equalTo(true))
59 fun `predicate correctly recognizes not visible reply`() {
60 val postReply = createPostReply(post = post, time = System.currentTimeMillis() + 100000)
61 assertThat(replyVisibilityFilter.isVisible(localSone).test(postReply), equalTo(false))