package net.pterodactylus.sone.template;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
import net.pterodactylus.sone.web.page.FreenetRequest;
import net.pterodactylus.util.template.TemplateContext;
import freenet.support.api.HTTPRequest;
import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link GetPagePlugin}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPagePluginTest {
private final GetPagePlugin plugin = new GetPagePlugin();
private final TemplateContext context = mock(TemplateContext.class);
private final FreenetRequest request = mock(FreenetRequest.class);
private final Map<String, String> parameters =
new HashMap<String, String>();
private HTTPRequest httpRequest = mock(HTTPRequest.class);
@Before
public void setupTemplateContext() {
when(context.get("request")).thenReturn(request);
when(request.getHttpRequest()).thenReturn(httpRequest);
when(httpRequest.getParam("page")).thenReturn("1");
}
@Test
public void fullySpecifiedPluginCallSetsCorrectValue() {
parameters.put("request", "request");
parameters.put("parameter", "page");
parameters.put("key", "page-key");
plugin.execute(context, parameters);
verify(context).set("page-key", 1);
}
@Test
public void missingRequestParameterStillSetsCorrectValue() {
parameters.put("parameter", "page");
parameters.put("key", "page-key");
plugin.execute(context, parameters);
verify(context).set("page-key", 1);
}
@Test
public void missingParameterParameterStillSetsCorrectValue() {
parameters.put("request", "request");
parameters.put("key", "page-key");
plugin.execute(context, parameters);
verify(context).set("page-key", 1);
}
@Test
public void missingKeyParameterStillSetsCorrectValue() {
parameters.put("request", "request");
parameters.put("parameter", "page");
plugin.execute(context, parameters);
verify(context).set("page", 1);
}
@Test
public void unparseablePageSetsPageZero() {
parameters.put("parameter", "wrong-parameter");
plugin.execute(context, parameters);
verify(context).set("page", 0);
}
}