Commit d9ae974360c4e326d274173d9ce9cad8fbb55fc3

Authored by Ednara Oliveira
1 parent d76ee5a9
Exists in master

Refatoração de teste unitário: ParamenterImplTest

impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/implementation/ParameterImplTest.java
1   -///*
2   -// * Demoiselle Framework
3   -// * Copyright (C) 2010 SERPRO
4   -// * ----------------------------------------------------------------------------
5   -// * This file is part of Demoiselle Framework.
6   -// *
7   -// * Demoiselle Framework is free software; you can redistribute it and/or
8   -// * modify it under the terms of the GNU Lesser General Public License version 3
9   -// * as published by the Free Software Foundation.
10   -// *
11   -// * This program is distributed in the hope that it will be useful,
12   -// * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -// * GNU General Public License for more details.
15   -// *
16   -// * You should have received a copy of the GNU Lesser General Public License version 3
17   -// * along with this program; if not, see <http://www.gnu.org/licenses/>
18   -// * or write to the Free Software Foundation, Inc., 51 Franklin Street,
19   -// * Fifth Floor, Boston, MA 02110-1301, USA.
20   -// * ----------------------------------------------------------------------------
21   -// * Este arquivo é parte do Framework Demoiselle.
22   -// *
23   -// * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
24   -// * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
25   -// * do Software Livre (FSF).
26   -// *
27   -// * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
28   -// * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
29   -// * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
30   -// * para maiores detalhes.
31   -// *
32   -// * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
33   -// * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
34   -// * ou escreva para a Fundação do Software Livre (FSF) Inc.,
35   -// * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
36   -// */
37   -//package br.gov.frameworkdemoiselle.internal.implementation;
38   -//
39   -//import static org.easymock.EasyMock.expect;
40   -//import static org.junit.Assert.assertEquals;
41   -//import static org.powermock.api.easymock.PowerMock.createMock;
42   -//import static org.powermock.api.easymock.PowerMock.mockStatic;
43   -//import static org.powermock.api.easymock.PowerMock.replayAll;
44   -//import static org.powermock.api.easymock.PowerMock.verifyAll;
45   -//
46   -//import java.lang.reflect.Member;
47   -//import java.util.HashMap;
48   -//import java.util.Map;
49   -//
50   -//import javax.enterprise.context.RequestScoped;
51   -//import javax.enterprise.context.SessionScoped;
52   -//import javax.enterprise.inject.spi.Annotated;
53   -//import javax.enterprise.inject.spi.InjectionPoint;
54   -//import javax.faces.convert.Converter;
55   -//import javax.servlet.http.HttpServletRequest;
56   -//import javax.servlet.http.HttpSession;
57   -//
58   -//import org.easymock.EasyMock;
59   -//import org.junit.Before;
60   -//import org.junit.Test;
61   -//import org.junit.runner.RunWith;
62   -//import org.powermock.core.classloader.annotations.PrepareForTest;
63   -//import org.powermock.modules.junit4.PowerMockRunner;
64   -//import org.powermock.reflect.Whitebox;
65   -//
66   -//import br.gov.frameworkdemoiselle.annotation.Name;
67   -//import br.gov.frameworkdemoiselle.annotation.ViewScoped;
68   -//import br.gov.frameworkdemoiselle.util.Faces;
69   -//import br.gov.frameworkdemoiselle.util.Reflections;
70   -//
71   -//@RunWith(PowerMockRunner.class)
72   -//@PrepareForTest({ Reflections.class, Faces.class })
73   -//public class ParameterImplTest {
74   -//
75   -// private ParameterImpl<Long> param;
76   -//
77   -// private HttpServletRequest request;
78   -//
79   -// private InjectionPoint ip;
80   -//
81   -// private Converter converter;
82   -//
83   -// private Annotated annotated;
84   -//
85   -// private Name name;
86   -//
87   -// private HttpSession session;
88   -//
89   -// private Member member;
90   -//
91   -// @Before
92   -// public void before() {
93   -// ip = createMock(InjectionPoint.class);
94   -// request = createMock(HttpServletRequest.class);
95   -// session = createMock(HttpSession.class);
96   -// annotated = createMock(Annotated.class);
97   -// name = createMock(Name.class);
98   -// converter = createMock(Converter.class);
99   -// member = createMock(Member.class);
100   -//
101   -// mockStatic(Reflections.class);
102   -// mockStatic(Faces.class);
103   -// }
104   -//
105   -// private void prepareForTestWithKeyFromNameAnnotation() {
106   -// expect(ip.getAnnotated()).andReturn(annotated).anyTimes();
107   -// expect(ip.getMember()).andReturn(null);
108   -// expect(annotated.isAnnotationPresent(Name.class)).andReturn(true);
109   -// expect(annotated.getAnnotation(Name.class)).andReturn(name);
110   -// expect(name.value()).andReturn("name");
111   -// expect(Reflections.getGenericTypeArgument(EasyMock.anyObject(Member.class), EasyMock.anyInt())).andReturn(
112   -// Object.class);
113   -// expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
114   -// }
115   -//
116   -// @Test
117   -// public void testConstructorCase1() {
118   -// this.prepareForTestWithKeyFromNameAnnotation();
119   -//
120   -// replayAll();
121   -// param = new ParameterImpl<Long>(ip, request);
122   -// assertEquals("name", param.getKey());
123   -// assertEquals(Object.class, Whitebox.getInternalState(param, "type"));
124   -// assertEquals(converter, param.getConverter());
125   -// verifyAll();
126   -// }
127   -//
128   -// @Test
129   -// public void testConstructorCase2() {
130   -// expect(member.getName()).andReturn("memberName");
131   -// expect(ip.getAnnotated()).andReturn(annotated).anyTimes();
132   -// expect(ip.getMember()).andReturn(member).anyTimes();
133   -// expect(annotated.isAnnotationPresent(Name.class)).andReturn(false);
134   -// expect(Reflections.getGenericTypeArgument(EasyMock.anyObject(Member.class), EasyMock.anyInt())).andReturn(
135   -// Object.class);
136   -// expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
137   -//
138   -// replayAll();
139   -// param = new ParameterImpl<Long>(ip, request);
140   -// assertEquals("memberName", param.getKey());
141   -// assertEquals(Object.class, Whitebox.getInternalState(param, "type"));
142   -// assertEquals(converter, param.getConverter());
143   -// verifyAll();
144   -// }
145   -//
146   -// @Test
147   -// public void testGetValueWhenSessionScopedAndParameterValueNotNull() {
148   -// this.prepareForTestWithKeyFromNameAnnotation();
149   -//
150   -// expect(Faces.convert("1", converter)).andReturn("return");
151   -// expect(request.getSession()).andReturn(session).anyTimes();
152   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
153   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
154   -// expect(session.getAttribute("name")).andReturn("return");
155   -//
156   -// session.setAttribute("name", "return");
157   -//
158   -// replayAll();
159   -// param = new ParameterImpl<Long>(ip, request);
160   -// assertEquals("return", param.getValue());
161   -// verifyAll();
162   -// }
163   -//
164   -// @Test
165   -// public void testGetValueWhenSessionScopedAndParameterValueNull() {
166   -// this.prepareForTestWithKeyFromNameAnnotation();
167   -//
168   -// expect(request.getSession()).andReturn(session).anyTimes();
169   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn(null);
170   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
171   -// expect(session.getAttribute("name")).andReturn("return");
172   -//
173   -// replayAll();
174   -// param = new ParameterImpl<Long>(ip, request);
175   -// assertEquals("return", param.getValue());
176   -// verifyAll();
177   -// }
178   -//
179   -// @Test
180   -// public void testGetValueWhenRequestScoped() {
181   -// this.prepareForTestWithKeyFromNameAnnotation();
182   -//
183   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
184   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
185   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
186   -// expect(Faces.convert("1", converter)).andReturn("return");
187   -//
188   -// replayAll();
189   -// param = new ParameterImpl<Long>(ip, request);
190   -// assertEquals("return", param.getValue());
191   -// verifyAll();
192   -// }
193   -//
194   -// @Test
195   -// public void testGetValueWhenViewScopedWithParamValueNotNull() {
196   -// this.prepareForTestWithKeyFromNameAnnotation();
197   -// Map<String, Object> map = new HashMap<String,Object>();
198   -//
199   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
200   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
201   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
202   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
203   -// expect(Faces.getViewMap()).andReturn(map);
204   -// expect(Faces.convert("1", converter)).andReturn("return");
205   -//
206   -// replayAll();
207   -// param = new ParameterImpl<Long>(ip, request);
208   -// assertEquals("return", param.getValue());
209   -// assertEquals("return", map.get("name"));
210   -// verifyAll();
211   -// }
212   -//
213   -// @Test
214   -// public void testGetValueWhenViewScopedWithParamValueNull() {
215   -// this.prepareForTestWithKeyFromNameAnnotation();
216   -// Map<String, Object> map = new HashMap<String,Object>();
217   -// map.put("name", "ops");
218   -//
219   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
220   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
221   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
222   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn(null);
223   -// expect(Faces.getViewMap()).andReturn(map);
224   -//
225   -// replayAll();
226   -// param = new ParameterImpl<Long>(ip, request);
227   -// assertEquals("ops", param.getValue());
228   -// assertEquals("ops", map.get("name"));
229   -// verifyAll();
230   -// }
231   -//
232   -// @Test
233   -// public void testGetValueElseWithValueNull() {
234   -// this.prepareForTestWithKeyFromNameAnnotation();
235   -//
236   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
237   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
238   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
239   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
240   -// expect(Faces.convert("1", converter)).andReturn("return");
241   -//
242   -// replayAll();
243   -// param = new ParameterImpl<Long>(ip, request);
244   -// assertEquals("return", param.getValue());
245   -// verifyAll();
246   -// }
247   -//
248   -// @Test
249   -// public void testGetValueElseWithValueNotNull() {
250   -// this.prepareForTestWithKeyFromNameAnnotation();
251   -//
252   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
253   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
254   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
255   -// expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
256   -//
257   -// replayAll();
258   -// param = new ParameterImpl<Long>(ip, request);
259   -// Whitebox.setInternalState(param, "value", "myvalue");
260   -// assertEquals("myvalue", param.getValue());
261   -// verifyAll();
262   -// }
263   -//
264   -// @Test
265   -// public void testSetValueIsSessionScoped() {
266   -// this.prepareForTestWithKeyFromNameAnnotation();
267   -//
268   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
269   -// expect(request.getSession()).andReturn(session);
270   -//
271   -// session.setAttribute("name", 1L);
272   -//
273   -// replayAll();
274   -// param = new ParameterImpl<Long>(ip, request);
275   -// param.setValue(1L);
276   -// verifyAll();
277   -// }
278   -//
279   -// @Test
280   -// public void testSetValueIsViewScoped() {
281   -// this.prepareForTestWithKeyFromNameAnnotation();
282   -//
283   -// Map<String, Object> map = new HashMap<String, Object>();
284   -//
285   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
286   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
287   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
288   -// expect(Faces.getViewMap()).andReturn(map);
289   -//
290   -// replayAll();
291   -// param = new ParameterImpl<Long>(ip, request);
292   -// param.setValue(1L);
293   -// assertEquals(1L, map.get("name"));
294   -// verifyAll();
295   -// }
296   -//
297   -// @Test
298   -// public void testSetValueElse() {
299   -// this.prepareForTestWithKeyFromNameAnnotation();
300   -//
301   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
302   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
303   -// expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
304   -//
305   -// replayAll();
306   -// param = new ParameterImpl<Long>(ip, request);
307   -// param.setValue(1L);
308   -// assertEquals(1L, Whitebox.getInternalState(param, "value"));
309   -// verifyAll();
310   -// }
311   -//
312   -// @Test
313   -// public void testOthers() {
314   -// this.prepareForTestWithKeyFromNameAnnotation();
315   -//
316   -// expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
317   -// expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
318   -//
319   -// replayAll();
320   -// param = new ParameterImpl<Long>(ip, request);
321   -// param.setValue(1L);
322   -// verifyAll();
323   -// }
324   -//
325   -//}
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPaOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.internal.implementation;
  38 +
  39 +import static org.easymock.EasyMock.expect;
  40 +import static org.junit.Assert.assertEquals;
  41 +import static org.powermock.api.easymock.PowerMock.createMock;
  42 +import static org.powermock.api.easymock.PowerMock.mockStatic;
  43 +import static org.powermock.api.easymock.PowerMock.replayAll;
  44 +import static org.powermock.api.easymock.PowerMock.verifyAll;
  45 +
  46 +import java.lang.reflect.Member;
  47 +import java.util.HashMap;
  48 +import java.util.Map;
  49 +
  50 +import javax.enterprise.context.RequestScoped;
  51 +import javax.enterprise.context.SessionScoped;
  52 +import javax.enterprise.inject.spi.Annotated;
  53 +import javax.enterprise.inject.spi.InjectionPoint;
  54 +import javax.faces.convert.Converter;
  55 +import javax.servlet.http.HttpServletRequest;
  56 +import javax.servlet.http.HttpSession;
  57 +import javax.swing.text.View;
  58 +
  59 +import org.easymock.EasyMock;
  60 +import org.junit.Before;
  61 +import org.junit.Test;
  62 +import org.junit.runner.RunWith;
  63 +import org.powermock.core.classloader.annotations.PrepareForTest;
  64 +import org.powermock.modules.junit4.PowerMockRunner;
  65 +import org.powermock.reflect.Whitebox;
  66 +
  67 +import br.gov.frameworkdemoiselle.annotation.Name;
  68 +import br.gov.frameworkdemoiselle.annotation.ViewScoped;
  69 +import br.gov.frameworkdemoiselle.util.Beans;
  70 +import br.gov.frameworkdemoiselle.util.Faces;
  71 +import br.gov.frameworkdemoiselle.util.Reflections;
  72 +
  73 +@RunWith(PowerMockRunner.class)
  74 +@PrepareForTest({ Reflections.class, Faces.class, Beans.class })
  75 +public class ParameterImplTest {
  76 +
  77 + private ParameterImpl<Long> param;
  78 +
  79 + private HttpServletRequest request;
  80 +
  81 + private InjectionPoint ip;
  82 +
  83 + private Converter converter;
  84 +
  85 + private Annotated annotated;
  86 +
  87 + private Name name;
  88 +
  89 + private HttpSession session;
  90 +
  91 + private Member member;
  92 +
  93 + @Before
  94 + public void before() {
  95 + ip = createMock(InjectionPoint.class);
  96 + request = createMock(HttpServletRequest.class);
  97 + session = createMock(HttpSession.class);
  98 + annotated = createMock(Annotated.class);
  99 + name = createMock(Name.class);
  100 + converter = createMock(Converter.class);
  101 + member = createMock(Member.class);
  102 +
  103 + mockStatic(Reflections.class);
  104 + mockStatic(Faces.class);
  105 + }
  106 +
  107 + private void prepareForTestWithKeyFromNameAnnotation() {
  108 + expect(ip.getAnnotated()).andReturn(annotated).anyTimes();
  109 + expect(ip.getMember()).andReturn(null);
  110 + expect(annotated.isAnnotationPresent(Name.class)).andReturn(true);
  111 + expect(annotated.getAnnotation(Name.class)).andReturn(name);
  112 + expect(name.value()).andReturn("name");
  113 + expect(Reflections.getGenericTypeArgument(EasyMock.anyObject(Member.class), EasyMock.anyInt())).andReturn(
  114 + Object.class);
  115 + }
  116 +
  117 + @Test
  118 + public void testConstructorCase1() {
  119 + this.prepareForTestWithKeyFromNameAnnotation();
  120 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  121 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
  122 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
  123 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
  124 +
  125 + replayAll();
  126 + param = new ParameterImpl<Long>(ip);
  127 + assertEquals("name", param.getKey());
  128 + assertEquals(Object.class, Whitebox.getInternalState(param, "type"));
  129 + assertEquals(converter, param.getConverter());
  130 + verifyAll();
  131 + }
  132 +
  133 + @Test
  134 + public void testConstructorCase2() {
  135 + expect(member.getName()).andReturn("memberName");
  136 + expect(ip.getAnnotated()).andReturn(annotated).anyTimes();
  137 + expect(ip.getMember()).andReturn(member).anyTimes();
  138 + expect(annotated.isAnnotationPresent(Name.class)).andReturn(false);
  139 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
  140 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
  141 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
  142 + expect(Reflections.getGenericTypeArgument(EasyMock.anyObject(Member.class), EasyMock.anyInt())).andReturn(
  143 + Object.class);
  144 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  145 +
  146 + replayAll();
  147 + param = new ParameterImpl<Long>(ip);
  148 + assertEquals("memberName", param.getKey());
  149 + assertEquals(Object.class, Whitebox.getInternalState(param, "type"));
  150 + assertEquals(converter, param.getConverter());
  151 + verifyAll();
  152 + }
  153 +
  154 + @Test
  155 + public void testGetValueWhenSessionScopedAndParameterValueNotNull() {
  156 + this.prepareForTestWithKeyFromNameAnnotation();
  157 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  158 +
  159 + mockStatic(Beans.class);
  160 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  161 +
  162 + expect(Faces.convert("1", converter)).andReturn("return");
  163 + expect(request.getSession()).andReturn(session).anyTimes();
  164 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
  165 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
  166 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  167 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  168 +
  169 + expect(session.getAttribute("name")).andReturn("return");
  170 +
  171 + session.setAttribute("name", "return");
  172 +
  173 + replayAll();
  174 + param = new ParameterImpl<Long>(ip);
  175 + assertEquals("return", param.getValue());
  176 + verifyAll();
  177 + }
  178 +
  179 + @Test
  180 + public void testGetValueWhenSessionScopedAndParameterValueNull() {
  181 + this.prepareForTestWithKeyFromNameAnnotation();
  182 +
  183 + mockStatic(Beans.class);
  184 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  185 +
  186 + expect(request.getSession()).andReturn(session).anyTimes();
  187 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn(null);
  188 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
  189 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  190 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  191 + expect(session.getAttribute("name")).andReturn("return");
  192 +
  193 + replayAll();
  194 + param = new ParameterImpl<Long>(ip);
  195 + assertEquals("return", param.getValue());
  196 + verifyAll();
  197 + }
  198 +
  199 + @Test
  200 + public void testGetValueWhenRequestScoped() {
  201 + this.prepareForTestWithKeyFromNameAnnotation();
  202 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  203 +
  204 + mockStatic(Beans.class);
  205 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  206 +
  207 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  208 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
  209 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  210 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
  211 + expect(request.getSession()).andReturn(session).anyTimes();
  212 + expect(Faces.convert("1", converter)).andReturn("return");
  213 +
  214 + replayAll();
  215 + param = new ParameterImpl<Long>(ip);
  216 + assertEquals("return", param.getValue());
  217 + verifyAll();
  218 + }
  219 +
  220 + @Test
  221 + public void testGetValueWhenViewScopedWithParamValueNotNull() {
  222 + this.prepareForTestWithKeyFromNameAnnotation();
  223 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  224 + Map<String, Object> map = new HashMap<String,Object>();
  225 +
  226 + mockStatic(Beans.class);
  227 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  228 +
  229 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  230 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  231 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
  232 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
  233 + expect(Faces.getViewMap()).andReturn(map);
  234 + expect(Faces.convert("1", converter)).andReturn("return");
  235 +
  236 + replayAll();
  237 + param = new ParameterImpl<Long>(ip);
  238 + assertEquals("return", param.getValue());
  239 + assertEquals("return", map.get("name"));
  240 + verifyAll();
  241 + }
  242 +
  243 + @Test
  244 + public void testGetValueWhenViewScopedWithParamValueNull() {
  245 + this.prepareForTestWithKeyFromNameAnnotation();
  246 + Map<String, Object> map = new HashMap<String,Object>();
  247 + map.put("name", "ops");
  248 +
  249 + mockStatic(Beans.class);
  250 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  251 +
  252 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  253 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  254 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
  255 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn(null);
  256 + expect(Faces.getViewMap()).andReturn(map);
  257 +
  258 + replayAll();
  259 + param = new ParameterImpl<Long>(ip);
  260 + assertEquals("ops", param.getValue());
  261 + assertEquals("ops", map.get("name"));
  262 + verifyAll();
  263 + }
  264 +
  265 + @Test
  266 + public void testGetValueElseWithValueNull() {
  267 + this.prepareForTestWithKeyFromNameAnnotation();
  268 + expect(Faces.getConverter(EasyMock.anyObject(Class.class))).andReturn(converter);
  269 +
  270 + mockStatic(Beans.class);
  271 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  272 +
  273 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  274 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  275 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  276 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
  277 + expect(Faces.convert("1", converter)).andReturn("return");
  278 +
  279 + replayAll();
  280 + param = new ParameterImpl<Long>(ip);
  281 + assertEquals("return", param.getValue());
  282 + verifyAll();
  283 + }
  284 +
  285 + @Test
  286 + public void testGetValueElseWithValueNotNull() {
  287 + this.prepareForTestWithKeyFromNameAnnotation();
  288 +
  289 + mockStatic(Beans.class);
  290 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  291 +
  292 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  293 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  294 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  295 + expect(request.getParameter(EasyMock.anyObject(String.class))).andReturn("1");
  296 +
  297 + replayAll();
  298 + param = new ParameterImpl<Long>(ip);
  299 + Whitebox.setInternalState(param, "value", "myvalue");
  300 + assertEquals("myvalue", param.getValue());
  301 + verifyAll();
  302 + }
  303 +
  304 + @Test
  305 + public void testSetValueIsSessionScoped() {
  306 + this.prepareForTestWithKeyFromNameAnnotation();
  307 +
  308 + mockStatic(Beans.class);
  309 + expect(Beans.getReference(HttpServletRequest.class)).andReturn(request).anyTimes();
  310 +
  311 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(true);
  312 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  313 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  314 + expect(request.getSession()).andReturn(session);
  315 +
  316 + session.setAttribute("name", 1L);
  317 +
  318 + replayAll();
  319 + param = new ParameterImpl<Long>(ip);
  320 + param.setValue(1L);
  321 + verifyAll();
  322 + }
  323 +
  324 + @Test
  325 + public void testSetValueIsViewScoped() {
  326 + this.prepareForTestWithKeyFromNameAnnotation();
  327 +
  328 + Map<String, Object> map = new HashMap<String, Object>();
  329 +
  330 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  331 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  332 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(true);
  333 + expect(Faces.getViewMap()).andReturn(map);
  334 +
  335 + replayAll();
  336 + param = new ParameterImpl<Long>(ip);
  337 + param.setValue(1L);
  338 + assertEquals(1L, map.get("name"));
  339 + verifyAll();
  340 + }
  341 +
  342 + @Test
  343 + public void testSetValueElse() {
  344 + this.prepareForTestWithKeyFromNameAnnotation();
  345 +
  346 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  347 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(false);
  348 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  349 +
  350 + replayAll();
  351 + param = new ParameterImpl<Long>(ip);
  352 + param.setValue(1L);
  353 + assertEquals(1L, Whitebox.getInternalState(param, "value"));
  354 + verifyAll();
  355 + }
  356 +
  357 + @Test
  358 + public void testOthers() {
  359 + this.prepareForTestWithKeyFromNameAnnotation();
  360 +
  361 + expect(annotated.isAnnotationPresent(SessionScoped.class)).andReturn(false);
  362 + expect(annotated.isAnnotationPresent(RequestScoped.class)).andReturn(true);
  363 + expect(annotated.isAnnotationPresent(ViewScoped.class)).andReturn(false);
  364 +
  365 + replayAll();
  366 + param = new ParameterImpl<Long>(ip);
  367 + param.setValue(1L);
  368 + verifyAll();
  369 + }
  370 +
  371 +}
... ...