package net.pterodactylus.sone.web;
import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.List;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.PostReply;
import com.google.common.base.Optional;
import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link NewPage}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class NewPageTest extends WebPageTest {
private final NewPage newPage = new NewPage(template, webInterface);
@Before
public void setupNumberOfPostsPerPage() {
when(webInterface.getCore().getPreferences().getPostsPerPage()).thenReturn(5);
}
@Test
public void postsAreNotDuplicatedWhenTheyComeFromBothNewPostsAndNewRepliesNotifications() throws Exception {
// given
Post extraPost = mock(Post.class);
List<Post> posts = asList(mock(Post.class), mock(Post.class));
List<PostReply> postReplies = asList(mock(PostReply.class), mock(PostReply.class));
when(postReplies.get(0).getPost()).thenReturn(Optional.of(posts.get(0)));
when(postReplies.get(1).getPost()).thenReturn(Optional.of(extraPost));
when(webInterface.getNewPosts(currentSone)).thenReturn(posts);
when(webInterface.getNewReplies(currentSone)).thenReturn(postReplies);
// when
newPage.processTemplate(freenetRequest, templateContext);
// then
List<Post> renderedPosts = templateContext.get("posts", List.class);
assertThat(renderedPosts, containsInAnyOrder(posts.get(0), posts.get(1), extraPost));
}
}