package net.pterodactylus.sone.notify
-import com.google.common.base.Predicate
import com.google.inject.Guice
import net.pterodactylus.sone.data.Post
import net.pterodactylus.sone.data.PostReply
*/
class ListNotificationFilterTest {
- private val listNotificationFilter = ListNotificationFilter(showAllPosts, showAllReplies)
+ private val listNotificationFilter = DefaultListNotificationFilter(showAllPosts, showAllReplies)
@Test
fun `filter is only created once`() {
localSone.options.isShowNewPostNotifications = true
val newPostNotification = createNewPostNotification()
newPostNotification.add(createPost())
- val listNotificationFilter = ListNotificationFilter(showNoPosts, showAllReplies)
+ val listNotificationFilter = DefaultListNotificationFilter(showNoPosts, showAllReplies)
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(newPostNotification), localSone)
assertThat(filteredNotifications, emptyIterable())
}
val newPostNotification = createNewPostNotification()
newPostNotification.add(createPost())
newPostNotification.add(createPost())
- val listNotificationFilter = ListNotificationFilter(matchThisPost(newPostNotification.elements[1]), showAllReplies)
+ val listNotificationFilter = DefaultListNotificationFilter(matchThisPost(newPostNotification.elements[1]), showAllReplies)
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(newPostNotification), localSone)
assertThat((filteredNotifications[0] as ListNotification<Post>).elements, contains(newPostNotification.elements[1]))
}
val newReplyNotification = createNewReplyNotification()
newReplyNotification.add(createPostReply())
newReplyNotification.add(createPostReply())
- val listNotificationFilter = ListNotificationFilter(showAllPosts, matchThisReply(newReplyNotification.elements[1]))
+ val listNotificationFilter = DefaultListNotificationFilter(showAllPosts, matchThisReply(newReplyNotification.elements[1]))
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(newReplyNotification), localSone)
assertThat(filteredNotifications, hasSize(1))
assertThat((filteredNotifications[0] as ListNotification<PostReply?>).elements[0], equalTo(newReplyNotification.elements[1]))
val newReplyNotification = createNewReplyNotification()
newReplyNotification.add(createPostReply())
newReplyNotification.add(createPostReply())
- val listNotificationFilter = ListNotificationFilter(showAllPosts, showNoReplies)
+ val listNotificationFilter = DefaultListNotificationFilter(showAllPosts, showNoReplies)
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(newReplyNotification), localSone)
assertThat(filteredNotifications, emptyIterable())
}
val mentionNotification = createMentionNotification()
mentionNotification.add(createPost())
mentionNotification.add(createPost())
- val listNotificationFilter = ListNotificationFilter(matchThisPost(mentionNotification.elements[1]), showAllReplies)
+ val listNotificationFilter = DefaultListNotificationFilter(matchThisPost(mentionNotification.elements[1]), showAllReplies)
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(mentionNotification), null)
assertThat(filteredNotifications, hasSize(1))
assertThat((filteredNotifications[0] as ListNotification<Post?>).elements[0], equalTo(mentionNotification.elements[1]))
val mentionNotification = createMentionNotification()
mentionNotification.add(createPost())
mentionNotification.add(createPost())
- val listNotificationFilter = ListNotificationFilter(showNoPosts, showAllReplies)
+ val listNotificationFilter = DefaultListNotificationFilter(showNoPosts, showAllReplies)
val filteredNotifications = listNotificationFilter.filterNotifications(listOf(mentionNotification), null)
assertThat(filteredNotifications, emptyIterable())
}
private fun createMentionNotification() =
ListNotification<Post>("mention-notification", "", Template())
-
-private fun matchThisPost(post: Post) = createPostVisibilityFilter { _, p -> p == post }
-private val showAllPosts = createPostVisibilityFilter { _, _ -> true }
-private val showNoPosts = createPostVisibilityFilter { _, _ -> false }
-
-private fun createPostVisibilityFilter(visible: (Sone?, Post) -> Boolean) = object : PostVisibilityFilter() {
- override fun isPostVisible(sone: Sone?, post: Post) = visible(sone, post)
- override fun isVisible(currentSone: Sone?) = Predicate<Post> { p -> p != null && isPostVisible(currentSone, p) }
-}
-
-private fun matchThisReply(reply: PostReply) = createReplyVisibilityFilter(showAllPosts) { _, r -> r == reply }
-private val showAllReplies = createReplyVisibilityFilter(showAllPosts) { _, _ -> true }
-private val showNoReplies = createReplyVisibilityFilter(showAllPosts) { _, _ -> false }
-
-private fun createReplyVisibilityFilter(postVisibilityFilter: PostVisibilityFilter, visible: (Sone?, PostReply) -> Boolean) = object : ReplyVisibilityFilter(postVisibilityFilter) {
- override fun isReplyVisible(sone: Sone?, reply: PostReply) = visible(sone, reply)
- override fun isVisible(currentSone: Sone?) = Predicate<PostReply> { r -> r != null && isReplyVisible(currentSone, r) }
-}