🎨 Rewrite test to not use mocks
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / notify / ReplyVisibilityFilterTest.kt
1 package net.pterodactylus.sone.notify
2
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
10 import org.junit.Test
11
12 /**
13  * Unit test for [ReplyVisibilityFilterTest].
14  */
15 class ReplyVisibilityFilterTest {
16
17         private val replyVisibilityFilter = ReplyVisibilityFilter(showAllPosts)
18         private val localSone = createLocalSone()
19         private val post = createPost()
20
21         @Test
22         fun `reply visibility filter is only created once`() {
23                 val injector = Guice.createInjector()
24                 injector.verifySingletonInstance<ReplyVisibilityFilter>()
25         }
26
27         @Test
28         fun `reply is not visible if post is not visible`() {
29                 val postReply = createPostReply(post = post)
30                 val replyVisibilityFilter = ReplyVisibilityFilter(showNoPosts)
31                 assertThat(replyVisibilityFilter.isReplyVisible(null, postReply), equalTo(false))
32         }
33
34         @Test
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))
38         }
39
40         @Test
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))
44         }
45
46         @Test
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))
50         }
51
52         @Test
53         fun `predicate correctly recognizes visible reply`() {
54                 val postReply = createPostReply(post = post)
55                 assertThat(replyVisibilityFilter.isVisible(localSone).test(postReply), equalTo(true))
56         }
57
58         @Test
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))
62         }
63
64 }