1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.bean.swagger;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.bean.swagger.SwaggerBuilder.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.net.*;
24
25 import org.apache.juneau.*;
26 import org.junit.jupiter.api.*;
27
28
29
30
31 class Contact_Test extends TestBase {
32
33 @Nested class A_basicTests extends TestBase {
34
35 private static final BeanTester<Contact> TESTER =
36 testBean(
37 bean()
38 .setEmail("a")
39 .setName("b")
40 .setUrl(URI.create("c"))
41 )
42 .props("email,name,url")
43 .vals("a,b,c")
44 .json("{email:'a',name:'b',url:'c'}")
45 .string("{'email':'a','name':'b','url':'c'}".replace('\'', '"'))
46 ;
47
48 @Test void a01_gettersAndSetters() {
49 TESTER.assertGettersAndSetters();
50 }
51
52 @Test void a02_copy() {
53 TESTER.assertCopy();
54 }
55
56 @Test void a03_toJson() {
57 TESTER.assertToJson();
58 }
59
60 @Test void a04_fromJson() {
61 TESTER.assertFromJson();
62 }
63
64 @Test void a05_roundTrip() {
65 TESTER.assertRoundTrip();
66 }
67
68 @Test void a06_toString() {
69 TESTER.assertToString();
70 }
71
72 @Test void a07_keySet() {
73 assertList(TESTER.bean().keySet(), "email", "name", "url");
74 }
75
76 @Test void a08_nullParameters() {
77 var x = bean();
78 assertThrows(IllegalArgumentException.class, () -> x.get(null, String.class));
79 assertThrows(IllegalArgumentException.class, () -> x.set(null, "value"));
80 }
81
82 @Test void a09_asMap() {
83 assertBean(
84 bean()
85 .setName("a")
86 .setEmail("b")
87 .set("x1", "x1a")
88 .asMap(),
89 "email,name,x1",
90 "b,a,x1a"
91 );
92 }
93
94 @Test void a10_extraKeys() {
95 var x = bean().set("x1", "x1a").set("x2", "x2a");
96 assertList(x.extraKeys(), "x1", "x2");
97 assertEmpty(bean().extraKeys());
98 }
99
100 @Test void a11_strictMode() {
101 assertThrows(RuntimeException.class, () -> bean().strict().set("foo", "bar"));
102 assertDoesNotThrow(() -> bean().set("foo", "bar"));
103
104 assertFalse(bean().isStrict());
105 assertTrue(bean().strict().isStrict());
106 assertFalse(bean().strict(false).isStrict());
107 assertThrows(IllegalArgumentException.class, ()->bean().strict(null));
108 }
109 }
110
111 @Nested class B_emptyTests extends TestBase {
112
113 private static final BeanTester<Contact> TESTER =
114 testBean(bean())
115 .props("email,name,url")
116 .vals("<null>,<null>,<null>")
117 .json("{}")
118 .string("{}")
119 ;
120
121 @Test void b01_gettersAndSetters() {
122 TESTER.assertGettersAndSetters();
123 }
124
125 @Test void b02_copy() {
126 TESTER.assertCopy();
127 }
128
129 @Test void b03_toJson() {
130 TESTER.assertToJson();
131 }
132
133 @Test void b04_fromJson() {
134 TESTER.assertFromJson();
135 }
136
137 @Test void b05_roundTrip() {
138 TESTER.assertRoundTrip();
139 }
140
141 @Test void b06_toString() {
142 TESTER.assertToString();
143 }
144
145 @Test void b07_keySet() {
146 assertEmpty(TESTER.bean().keySet());
147 }
148 }
149
150 @Nested class C_extraProperties extends TestBase {
151
152 private static final BeanTester<Contact> TESTER =
153 testBean(
154 bean()
155 .set("email", "a")
156 .set("name", "b")
157 .set("url", URI.create("c"))
158 .set("x1", "x1a")
159 .set("x2", null)
160 )
161 .props("email,name,url,x1,x2")
162 .vals("a,b,c,x1a,<null>")
163 .json("{email:'a',name:'b',url:'c',x1:'x1a'}")
164 .string("{'email':'a','name':'b','url':'c','x1':'x1a'}".replace('\'', '"'))
165 ;
166
167 @Test void c01_gettersAndSetters() {
168 TESTER.assertGettersAndSetters();
169 }
170
171 @Test void c02_copy() {
172 TESTER.assertCopy();
173 }
174
175 @Test void c03_toJson() {
176 TESTER.assertToJson();
177 }
178
179 @Test void c04_fromJson() {
180 TESTER.assertFromJson();
181 }
182
183 @Test void c05_roundTrip() {
184 TESTER.assertRoundTrip();
185 }
186
187 @Test void c06_toString() {
188 TESTER.assertToString();
189 }
190
191 @Test void c07_keySet() {
192 assertList(TESTER.bean().keySet(), "email", "name", "url", "x1", "x2");
193 }
194
195 @Test void c08_get() {
196 assertMapped(
197 TESTER.bean(), (obj,prop) -> obj.get(prop, Object.class),
198 "email,name,url,x1,x2",
199 "a,b,c,x1a,<null>"
200 );
201 }
202
203 @Test void c09_getTypes() {
204 assertMapped(
205 TESTER.bean(), (obj,prop) -> simpleClassNameOf(obj.get(prop, Object.class)),
206 "email,name,url,x1,x2",
207 "String,String,URI,String,<null>"
208 );
209 }
210
211 @Test void c10_nullPropertyValue() {
212 assertThrows(IllegalArgumentException.class, ()->bean().get(null));
213 assertThrows(IllegalArgumentException.class, ()->bean().get(null, String.class));
214 assertThrows(IllegalArgumentException.class, ()->bean().set(null, "a"));
215 }
216 }
217
218
219
220
221
222 private static Contact bean() {
223 return contact();
224 }
225 }