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