package net.pterodactylus.sone.web; import static net.pterodactylus.util.web.Method.POST; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import net.pterodactylus.sone.data.Sone; import com.google.common.base.Optional; import org.junit.Test; /** * Unit test for {@link CreatePostPage}. * * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a> */ public class CreatePostPageTest extends WebPageTest { private final CreatePostPage page = new CreatePostPage(template, webInterface); @Test public void pageReturnsCorrectPath() { assertThat(page.getPath(), is("createPost.html")); } @Test public void returnPageIsSetInTemplateContext() throws Exception { addHttpRequestParameter("returnPage", "returnPage.html"); page.processTemplate(freenetRequest, templateContext); assertThat(templateContext.get("returnPage"), is((Object) "returnPage.html")); } @Test public void postIsCreatedCorrectly() throws Exception { addHttpRequestParameter("returnPage", "returnPage.html"); addHttpRequestParameter("text", "post text"); request("", POST); expectedException.expect(WebTestUtils.redirectsTo("returnPage.html")); try { page.processTemplate(freenetRequest, templateContext); } finally { verify(core).createPost(currentSone, Optional.<Sone>absent(), "post text"); } } @Test public void creatingAnEmptyPostIsDenied() throws Exception { addHttpRequestParameter("returnPage", "returnPage.html"); addHttpRequestParameter("text", " "); request("", POST); page.processTemplate(freenetRequest, templateContext); assertThat(templateContext.get("errorTextEmpty"), is((Object) true)); } @Test public void aSenderCanBeSelected() throws Exception { addHttpRequestParameter("returnPage", "returnPage.html"); addHttpRequestParameter("text", "post text"); addHttpRequestParameter("sender", "sender-id"); Sone sender = mock(Sone.class); addLocalSone("sender-id", sender); request("", POST); expectedException.expect(WebTestUtils.redirectsTo("returnPage.html")); try { page.processTemplate(freenetRequest, templateContext); } finally { verify(core).createPost(sender, Optional.<Sone>absent(), "post text"); } } @Test public void aRecipientCanBeSelected() throws Exception { addHttpRequestParameter("returnPage", "returnPage.html"); addHttpRequestParameter("text", "post text"); addHttpRequestParameter("recipient", "recipient-id"); Sone recipient = mock(Sone.class); addSone("recipient-id", recipient); request("", POST); expectedException.expect(WebTestUtils.redirectsTo("returnPage.html")); try { page.processTemplate(freenetRequest, templateContext); } finally { verify(core).createPost(currentSone, Optional.of(recipient), "post text"); } } }