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.apache.juneau.commons.utils.CollectionUtils.*;
21  import static org.junit.jupiter.api.Assertions.*;
22  
23  import org.apache.juneau.*;
24  import org.junit.jupiter.api.*;
25  
26  /**
27   * Tests the PojoPaginator class.
28   */
29  class ObjectViewer_Test extends TestBase {
30  
31  	ObjectViewer ov = new ObjectViewer();
32  	BeanSession bs = BeanContext.DEFAULT_SESSION;
33  
34  	//-----------------------------------------------------------------------------------------------------------------
35  	// Null input
36  	//-----------------------------------------------------------------------------------------------------------------
37  
38  	@Test void a01_nullInput() {
39  		assertNull(ov.run(bs, null, null));
40  	}
41  
42  	//-----------------------------------------------------------------------------------------------------------------
43  	// Simple bean
44  	//-----------------------------------------------------------------------------------------------------------------
45  
46  	public static class A {
47  		public String f1,f2;
48  
49  		public static A create(String f1, String f2) {
50  			var a = new A();
51  			a.f1 = f1;
52  			a.f2 = f2;
53  			return a;
54  		}
55  	}
56  
57  	@Test void b01_simpleBean() {
58  		var sa = new ViewArgs("f1");
59  		var in = A.create("x1","x2");
60  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
61  		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
62  	}
63  
64  	@Test void b02_simpleBean_reverseColumns() {
65  		var sa = new ViewArgs("f2,f1");
66  		var in = A.create("x1","x2");
67  		assertJson("{f2:'x2',f1:'x1'}", ov.run(bs, in, sa));
68  		assertJson("{f2:'x2',f1:'x1'}", ov.runSingle(in, "f2,f1"));
69  	}
70  
71  	@Test void b03_simpleBean_dupColumns() {
72  		var sa = new ViewArgs("f1,f1");
73  		var in = A.create("x1","x2");
74  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
75  		assertJson("{f1:'x1'}", ov.runSingle(in, "f1,f1"));
76  	}
77  
78  	@Test void b04_simpleBean_nonExistentColumns() {
79  		var sa = new ViewArgs("fx");
80  		var in = A.create("x1","x2");
81  		assertJson("{}", ov.run(bs, in, sa));
82  		assertJson("{}", ov.runSingle(in, "fx"));
83  	}
84  
85  	@Test void b05_simpleBean_emptyArgs() {
86  		var sa = new ViewArgs("");
87  		var in = A.create("x1","x2");
88  		assertJson("{}", ov.run(bs, in, sa));
89  		assertJson("{}", ov.runSingle(in, ""));
90  	}
91  
92  	//-----------------------------------------------------------------------------------------------------------------
93  	// Simple BeanMap
94  	//-----------------------------------------------------------------------------------------------------------------
95  
96  	@Test void b06_simpleBeanMap() {
97  		var sa = new ViewArgs("f1");
98  		var in = bs.toBeanMap(A.create("x1","x2"));
99  		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
100 		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
101 	}
102 
103 	//-----------------------------------------------------------------------------------------------------------------
104 	// Simple map
105 	//-----------------------------------------------------------------------------------------------------------------
106 
107 	@Test void b07_simpleMap() {
108 		var sa = new ViewArgs("f1");
109 		var in = m("f1","x1","f2","x2");
110 		assertJson("{f1:'x1'}", ov.run(bs, in, sa));
111 		assertJson("{f1:'x1'}", ov.runSingle(in, "f1"));
112 	}
113 
114 	@Test void b08_simpleMap_reverseColumns() {
115 		var sa = new ViewArgs("f2,f1");
116 		var in = m("f1","x1","f2","x2");
117 		assertJson("{f2:'x2',f1:'x1'}", ov.run(bs, in, sa));
118 		assertJson("{f2:'x2',f1:'x1'}", ov.runSingle(in, "f2,f1"));
119 	}
120 
121 	@Test void b09_simpleMap_nonExistentColumns() {
122 		var sa = new ViewArgs("fx");
123 		var in = m("f1","x1","f2","x2");
124 		assertJson("{}", ov.run(bs, in, sa));
125 		assertJson("{}", ov.runSingle(in, "fx"));
126 	}
127 
128 	@Test void b10_simpleMap_emptyView() {
129 		var sa = new ViewArgs("");
130 		var in = m("f1","x1","f2","x2");
131 		assertJson("{}", ov.run(bs, in, sa));
132 		assertJson("{}", ov.runSingle(in, ""));
133 	}
134 
135 	//-----------------------------------------------------------------------------------------------------------------
136 	// Bean array
137 	//-----------------------------------------------------------------------------------------------------------------
138 
139 	@Test void c01_beanArray() {
140 		var sa = new ViewArgs("f1");
141 		var in = a(A.create("x1","x2"));
142 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
143 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
144 	}
145 
146 	@Test void c02_beanArray_reverseColumns() {
147 		var sa = new ViewArgs("f2,f1");
148 		var in = a(A.create("x1","x2"));
149 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
150 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
151 	}
152 
153 	@Test void c03_beanArray_dupColumns() {
154 		var sa = new ViewArgs("f1,f1");
155 		var in = a(A.create("x1","x2"));
156 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
157 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
158 	}
159 
160 	@Test void c04_beanArray_nonExistentColumns() {
161 		var sa = new ViewArgs("fx");
162 		var in = a(A.create("x1","x2"));
163 		assertJson("[{}]", ov.run(bs, in, sa));
164 		assertJson("[{}]", ov.run(in, "fx"));
165 	}
166 
167 	@Test void c05_beanArray_emptyArgs() {
168 		var sa = new ViewArgs("");
169 		var in = a(A.create("x1","x2"));
170 		assertJson("[{}]", ov.run(bs, in, sa));
171 		assertJson("[{}]", ov.run(in, ""));
172 	}
173 
174 	@Test void c06_beanArray_withNull() {
175 		var sa = new ViewArgs("f1");
176 		var in = a(A.create("x1","x2"),null);
177 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
178 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
179 	}
180 
181 	//-----------------------------------------------------------------------------------------------------------------
182 	// Bean list
183 	//-----------------------------------------------------------------------------------------------------------------
184 
185 	@Test void d01_beanList() {
186 		var sa = new ViewArgs("f1");
187 		var in = l(A.create("x1","x2"));
188 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
189 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
190 	}
191 
192 	@Test void d02_beanList_reverseColumns() {
193 		var sa = new ViewArgs("f2,f1");
194 		var in = l(A.create("x1","x2"));
195 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
196 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
197 	}
198 
199 	@Test void d03_beanList_dupColumns() {
200 		var sa = new ViewArgs("f1,f1");
201 		var in = l(A.create("x1","x2"));
202 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
203 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
204 	}
205 
206 	@Test void d04_beanList_nonExistentColumns() {
207 		var sa = new ViewArgs("fx");
208 		var in = l(A.create("x1","x2"));
209 		assertJson("[{}]", ov.run(bs, in, sa));
210 		assertJson("[{}]", ov.run(in, "fx"));
211 	}
212 
213 	@Test void d05_beanList_emptyArgs() {
214 		var sa = new ViewArgs("");
215 		var in = l(A.create("x1","x2"));
216 		assertJson("[{}]", ov.run(bs, in, sa));
217 		assertJson("[{}]", ov.run(in, ""));
218 	}
219 
220 	@Test void d06_beanList_withNull() {
221 		var sa = new ViewArgs("f1");
222 		var in = l(A.create("x1","x2"),null);
223 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
224 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
225 	}
226 
227 	//-----------------------------------------------------------------------------------------------------------------
228 	// Bean set
229 	//-----------------------------------------------------------------------------------------------------------------
230 
231 	@Test void e01_beanSet() {
232 		var sa = new ViewArgs("f1");
233 		var in = set(A.create("x1","x2"));
234 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
235 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
236 	}
237 
238 	@Test void e02_beanSet_reverseColumns() {
239 		var sa = new ViewArgs("f2,f1");
240 		var in = set(A.create("x1","x2"));
241 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(bs, in, sa));
242 		assertJson("[{f2:'x2',f1:'x1'}]", ov.run(in, "f2,f1"));
243 	}
244 
245 	@Test void e03_beanSet_dupColumns() {
246 		var sa = new ViewArgs("f1,f1");
247 		var in = set(A.create("x1","x2"));
248 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
249 		assertJson("[{f1:'x1'}]", ov.run(in, "f1,f1"));
250 	}
251 
252 	@Test void e04_beanSet_nonExistentColumns() {
253 		var sa = new ViewArgs("fx");
254 		var in = set(A.create("x1","x2"));
255 		assertJson("[{}]", ov.run(bs, in, sa));
256 		assertJson("[{}]", ov.run(in, "fx"));
257 	}
258 
259 	@Test void e05_beanSet_emptyArgs() {
260 		var sa = new ViewArgs("");
261 		var in = set(A.create("x1","x2"));
262 		assertJson("[{}]", ov.run(bs, in, sa));
263 		assertJson("[{}]", ov.run(in, ""));
264 	}
265 
266 	@Test void e06_beanSet_withNull() {
267 		var sa = new ViewArgs("f1");
268 		var in = set(A.create("x1","x2"),null);
269 		assertJson("[{f1:'x1'},null]", ov.run(bs, in, sa));
270 		assertJson("[{f1:'x1'},null]", ov.run(in, "f1"));
271 	}
272 
273 	//-----------------------------------------------------------------------------------------------------------------
274 	// Other object
275 	//-----------------------------------------------------------------------------------------------------------------
276 
277 	@Test void f01_otherObject() {
278 		var sa = new ViewArgs("f1");
279 		var in = "foobar";
280 		assertEquals("foobar", ov.run(bs, in, sa));	}
281 
282 	//-----------------------------------------------------------------------------------------------------------------
283 	// Map list
284 	//-----------------------------------------------------------------------------------------------------------------
285 
286 	@Test void g01_mapList() {
287 		var sa = new ViewArgs("f1");
288 		var in = l(map("f1","x1","f2","x2"));
289 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
290 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
291 	}
292 
293 	//-----------------------------------------------------------------------------------------------------------------
294 	// BeanMap list
295 	//-----------------------------------------------------------------------------------------------------------------
296 
297 	@Test void h01_beanMapList() {
298 		var sa = new ViewArgs("f1");
299 		var in = l(bs.toBeanMap(A.create("x1","x2")));
300 		assertJson("[{f1:'x1'}]", ov.run(bs, in, sa));
301 		assertJson("[{f1:'x1'}]", ov.run(in, "f1"));
302 	}
303 
304 	//-----------------------------------------------------------------------------------------------------------------
305 	// Other object list
306 	//-----------------------------------------------------------------------------------------------------------------
307 
308 	@Test void i01_otherObjectList() {
309 		var sa = new ViewArgs("f1");
310 		var in = l("foobar");
311 		assertJson("['foobar']", ov.run(bs, in, sa));
312 		assertJson("['foobar']", ov.run(in, "f1"));
313 	}
314 }