View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.juneau.objecttools;
18  
19  import static org.apache.juneau.TestUtils.*;
20  import static org.junit.jupiter.api.Assertions.*;
21  
22  import org.apache.juneau.*;
23  import org.junit.jupiter.api.*;
24  
25  /**
26   * Tests the PojoPaginator class.
27   */
28  class ObjectViewer_Test extends TestBase {
29  
30  	ObjectViewer ov = new ObjectViewer();
31  	BeanSession bs = BeanContext.DEFAULT_SESSION;
32  
33  	//-----------------------------------------------------------------------------------------------------------------
34  	// Null input
35  	//-----------------------------------------------------------------------------------------------------------------
36  
37  	@Test void a01_nullInput() {
38  		assertNull(ov.run(bs, null, null));
39  	}
40  
41  	//-----------------------------------------------------------------------------------------------------------------
42  	// Simple bean
43  	//-----------------------------------------------------------------------------------------------------------------
44  
45  	public static class A {
46  		public String f1,f2;
47  
48  		public static A create(String f1, String f2) {
49  			var a = new A();
50  			a.f1 = f1;
51  			a.f2 = f2;
52  			return a;
53  		}
54  	}
55  
56  	@Test void b01_simpleBean() {
57  		var sa = new ViewArgs("f1");
58  		var in = A.create("x1","x2");
59  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
60  		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
61  	}
62  
63  	@Test void b02_simpleBean_reverseColumns() {
64  		var sa = new ViewArgs("f2,f1");
65  		var in = A.create("x1","x2");
66  		assertJson("{f2:'x2',f1:'x1'}", ov.run(bs, in, sa));
67  		assertJson("{f2:'x2',f1:'x1'}", ov.runSingle(in, "f2,f1"));
68  	}
69  
70  	@Test void b03_simpleBean_dupColumns() {
71  		var sa = new ViewArgs("f1,f1");
72  		var in = A.create("x1","x2");
73  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
74  		assertJson("{f1:'x1'}", ov.runSingle(in, "f1,f1"));
75  	}
76  
77  	@Test void b04_simpleBean_nonExistentColumns() {
78  		var sa = new ViewArgs("fx");
79  		var in = A.create("x1","x2");
80  		assertJson("{}", ov.run(bs, in, sa));
81  		assertJson("{}", ov.runSingle(in, "fx"));
82  	}
83  
84  	@Test void b05_simpleBean_emptyArgs() {
85  		var sa = new ViewArgs("");
86  		var in = A.create("x1","x2");
87  		assertJson("{}", ov.run(bs, in, sa));
88  		assertJson("{}", ov.runSingle(in, ""));
89  	}
90  
91  	//-----------------------------------------------------------------------------------------------------------------
92  	// Simple BeanMap
93  	//-----------------------------------------------------------------------------------------------------------------
94  
95  	@Test void b06_simpleBeanMap() {
96  		var sa = new ViewArgs("f1");
97  		var in = bs.toBeanMap(A.create("x1","x2"));
98  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
99  		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
100 	}
101 
102 	//-----------------------------------------------------------------------------------------------------------------
103 	// Simple map
104 	//-----------------------------------------------------------------------------------------------------------------
105 
106 	@Test void b07_simpleMap() {
107 		var sa = new ViewArgs("f1");
108 		var in = map("f1","x1","f2","x2");
109 		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
110 		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
111 	}
112 
113 	@Test void b08_simpleMap_reverseColumns() {
114 		var sa = new ViewArgs("f2,f1");
115 		var in = map("f1","x1","f2","x2");
116 		assertJson("{f2:'x2',f1:'x1'}", ov.run(bs, in, sa));
117 		assertJson("{f2:'x2',f1:'x1'}", ov.runSingle(in, "f2,f1"));
118 	}
119 
120 	@Test void b09_simpleMap_nonExistentColumns() {
121 		var sa = new ViewArgs("fx");
122 		var in = map("f1","x1","f2","x2");
123 		assertJson("{}", ov.run(bs, in, sa));
124 		assertJson("{}", ov.runSingle(in, "fx"));
125 	}
126 
127 	@Test void b10_simpleMap_emptyView() {
128 		var sa = new ViewArgs("");
129 		var in = map("f1","x1","f2","x2");
130 		assertJson("{}", ov.run(bs, in, sa));
131 		assertJson("{}", ov.runSingle(in, ""));
132 	}
133 
134 	//-----------------------------------------------------------------------------------------------------------------
135 	// Bean array
136 	//-----------------------------------------------------------------------------------------------------------------
137 
138 	@Test void c01_beanArray() {
139 		var sa = new ViewArgs("f1");
140 		var in = new A[]{A.create("x1","x2")};
141 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
142 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
143 	}
144 
145 	@Test void c02_beanArray_reverseColumns() {
146 		var sa = new ViewArgs("f2,f1");
147 		var in = new A[]{A.create("x1","x2")};
148 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
149 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
150 	}
151 
152 	@Test void c03_beanArray_dupColumns() {
153 		var sa = new ViewArgs("f1,f1");
154 		var in = new A[]{A.create("x1","x2")};
155 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
156 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
157 	}
158 
159 	@Test void c04_beanArray_nonExistentColumns() {
160 		var sa = new ViewArgs("fx");
161 		var in = new A[]{A.create("x1","x2")};
162 		assertJson("[{}]", ov.run(bs, in, sa));
163 		assertJson("[{}]", ov.run(in, "fx"));
164 	}
165 
166 	@Test void c05_beanArray_emptyArgs() {
167 		var sa = new ViewArgs("");
168 		var in = new A[]{A.create("x1","x2")};
169 		assertJson("[{}]", ov.run(bs, in, sa));
170 		assertJson("[{}]", ov.run(in, ""));
171 	}
172 
173 	@Test void c06_beanArray_withNull() {
174 		var sa = new ViewArgs("f1");
175 		var in = a(A.create("x1","x2"),null);
176 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
177 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
178 	}
179 
180 	//-----------------------------------------------------------------------------------------------------------------
181 	// Bean list
182 	//-----------------------------------------------------------------------------------------------------------------
183 
184 	@Test void d01_beanList() {
185 		var sa = new ViewArgs("f1");
186 		var in = list(A.create("x1","x2"));
187 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
188 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
189 	}
190 
191 	@Test void d02_beanList_reverseColumns() {
192 		var sa = new ViewArgs("f2,f1");
193 		var in = list(A.create("x1","x2"));
194 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
195 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
196 	}
197 
198 	@Test void d03_beanList_dupColumns() {
199 		var sa = new ViewArgs("f1,f1");
200 		var in = list(A.create("x1","x2"));
201 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
202 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
203 	}
204 
205 	@Test void d04_beanList_nonExistentColumns() {
206 		var sa = new ViewArgs("fx");
207 		var in = list(A.create("x1","x2"));
208 		assertJson("[{}]", ov.run(bs, in, sa));
209 		assertJson("[{}]", ov.run(in, "fx"));
210 	}
211 
212 	@Test void d05_beanList_emptyArgs() {
213 		var sa = new ViewArgs("");
214 		var in = list(A.create("x1","x2"));
215 		assertJson("[{}]", ov.run(bs, in, sa));
216 		assertJson("[{}]", ov.run(in, ""));
217 	}
218 
219 	@Test void d06_beanList_withNull() {
220 		var sa = new ViewArgs("f1");
221 		var in = list(A.create("x1","x2"),null);
222 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
223 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
224 	}
225 
226 	//-----------------------------------------------------------------------------------------------------------------
227 	// Bean set
228 	//-----------------------------------------------------------------------------------------------------------------
229 
230 	@Test void e01_beanSet() {
231 		var sa = new ViewArgs("f1");
232 		var in = set(A.create("x1","x2"));
233 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
234 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
235 	}
236 
237 	@Test void e02_beanSet_reverseColumns() {
238 		var sa = new ViewArgs("f2,f1");
239 		var in = set(A.create("x1","x2"));
240 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
241 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
242 	}
243 
244 	@Test void e03_beanSet_dupColumns() {
245 		var sa = new ViewArgs("f1,f1");
246 		var in = set(A.create("x1","x2"));
247 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
248 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
249 	}
250 
251 	@Test void e04_beanSet_nonExistentColumns() {
252 		var sa = new ViewArgs("fx");
253 		var in = set(A.create("x1","x2"));
254 		assertJson("[{}]", ov.run(bs, in, sa));
255 		assertJson("[{}]", ov.run(in, "fx"));
256 	}
257 
258 	@Test void e05_beanSet_emptyArgs() {
259 		var sa = new ViewArgs("");
260 		var in = set(A.create("x1","x2"));
261 		assertJson("[{}]", ov.run(bs, in, sa));
262 		assertJson("[{}]", ov.run(in, ""));
263 	}
264 
265 	@Test void e06_beanSet_withNull() {
266 		var sa = new ViewArgs("f1");
267 		var in = set(A.create("x1","x2"),null);
268 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
269 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
270 	}
271 
272 	//-----------------------------------------------------------------------------------------------------------------
273 	// Other object
274 	//-----------------------------------------------------------------------------------------------------------------
275 
276 	@Test void f01_otherObject() {
277 		var sa = new ViewArgs("f1");
278 		var in = "foobar";
279 		assertEquals("foobar", ov.run(bs, in, sa));	}
280 
281 	//-----------------------------------------------------------------------------------------------------------------
282 	// Map list
283 	//-----------------------------------------------------------------------------------------------------------------
284 
285 	@Test void g01_mapList() {
286 		var sa = new ViewArgs("f1");
287 		var in = list(map("f1","x1","f2","x2"));
288 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
289 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
290 	}
291 
292 	//-----------------------------------------------------------------------------------------------------------------
293 	// BeanMap list
294 	//-----------------------------------------------------------------------------------------------------------------
295 
296 	@Test void h01_beanMapList() {
297 		var sa = new ViewArgs("f1");
298 		var in = list(bs.toBeanMap(A.create("x1","x2")));
299 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
300 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
301 	}
302 
303 	//-----------------------------------------------------------------------------------------------------------------
304 	// Other object list
305 	//-----------------------------------------------------------------------------------------------------------------
306 
307 	@Test void i01_otherObjectList() {
308 		var sa = new ViewArgs("f1");
309 		var in = list("foobar");
310 		assertJson("['foobar']", ov.run(bs, in, sa));
311 		assertJson("['foobar']", ov.run(in, "f1"));
312 	}
313 }