febd06a4ccb35727400f12c385a9056b6ec68476
[Sone.git] / src / test / java / net / pterodactylus / sone / template / GetPagePluginTest.java
1 package net.pterodactylus.sone.template;
2
3 import static org.mockito.Mockito.mock;
4 import static org.mockito.Mockito.verify;
5 import static org.mockito.Mockito.when;
6
7 import java.util.HashMap;
8 import java.util.Map;
9
10 import net.pterodactylus.sone.web.page.FreenetRequest;
11 import net.pterodactylus.util.template.TemplateContext;
12
13 import freenet.support.api.HTTPRequest;
14
15 import org.junit.Before;
16 import org.junit.Test;
17
18 /**
19  * Unit test for {@link GetPagePlugin}.
20  *
21  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
22  */
23 public class GetPagePluginTest {
24
25         private final GetPagePlugin plugin = new GetPagePlugin();
26         private final TemplateContext context = mock(TemplateContext.class);
27         private final FreenetRequest request = mock(FreenetRequest.class);
28         private final Map<String, String> parameters =
29                         new HashMap<String, String>();
30         private HTTPRequest httpRequest = mock(HTTPRequest.class);
31
32         @Before
33         public void setupTemplateContext() {
34                 when(context.get("request")).thenReturn(request);
35                 when(request.getHttpRequest()).thenReturn(httpRequest);
36                 when(httpRequest.getParam("page")).thenReturn("1");
37         }
38
39         @Test
40         public void fullySpecifiedPluginCallSetsCorrectValue() {
41                 parameters.put("request", "request");
42                 parameters.put("parameter", "page");
43                 parameters.put("key", "page-key");
44                 plugin.execute(context, parameters);
45                 verify(context).set("page-key", 1);
46         }
47
48         @Test
49         public void missingRequestParameterStillSetsCorrectValue() {
50                 parameters.put("parameter", "page");
51                 parameters.put("key", "page-key");
52                 plugin.execute(context, parameters);
53                 verify(context).set("page-key", 1);
54         }
55
56         @Test
57         public void missingParameterParameterStillSetsCorrectValue() {
58                 parameters.put("request", "request");
59                 parameters.put("key", "page-key");
60                 plugin.execute(context, parameters);
61                 verify(context).set("page-key", 1);
62         }
63
64         @Test
65         public void missingKeyParameterStillSetsCorrectValue() {
66                 parameters.put("request", "request");
67                 parameters.put("parameter", "page");
68                 plugin.execute(context, parameters);
69                 verify(context).set("page", 1);
70         }
71
72         @Test
73         public void unparseablePageSetsPageZero() {
74                 parameters.put("parameter", "wrong-parameter");
75                 plugin.execute(context, parameters);
76                 verify(context).set("page", 0);
77         }
78
79 }