1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.bean.openapi3;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.bean.openapi3.OpenApiBuilder.*;
21 import static org.apache.juneau.junit.bct.BctAssertions.*;
22 import static org.junit.jupiter.api.Assertions.*;
23
24 import java.net.*;
25
26 import org.apache.juneau.*;
27 import org.junit.jupiter.api.*;
28
29
30
31
32 class ExternalDocumentation_Test extends TestBase {
33
34 @Nested class A_basicTests extends TestBase {
35
36 private static final BeanTester<ExternalDocumentation> TESTER =
37 testBean(
38 bean()
39 .setDescription("a")
40 .setUrl(URI.create("b"))
41 )
42 .props("description,url")
43 .vals("a,b")
44 .json("{description:'a',url:'b'}")
45 .string("{'description':'a','url':'b'}".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(), "description", "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
83 @Nested class B_emptyTests extends TestBase {
84
85 private static final BeanTester<ExternalDocumentation> TESTER =
86 testBean(bean())
87 .props("url,description")
88 .vals("<null>,<null>")
89 .json("{}")
90 .string("{}")
91 ;
92
93 @Test void b01_gettersAndSetters() {
94 TESTER.assertGettersAndSetters();
95 }
96
97 @Test void b02_copy() {
98 TESTER.assertCopy();
99 }
100
101 @Test void b03_toJson() {
102 TESTER.assertToJson();
103 }
104
105 @Test void b04_fromJson() {
106 TESTER.assertFromJson();
107 }
108
109 @Test void b05_roundTrip() {
110 TESTER.assertRoundTrip();
111 }
112
113 @Test void b06_toString() {
114 TESTER.assertToString();
115 }
116
117 @Test void b07_keySet() {
118 assertEmpty(TESTER.bean().keySet());
119 }
120 }
121
122 @Nested class C_extraProperties extends TestBase {
123 private static final BeanTester<ExternalDocumentation> TESTER =
124 testBean(
125 bean()
126 .set("description", "a")
127 .set("url", URI.create("b"))
128 .set("x1", "x1a")
129 .set("x2", null)
130 )
131 .props("description,url,x1,x2")
132 .vals("a,b,x1a,<null>")
133 .json("{description:'a',url:'b',x1:'x1a'}")
134 .string("{'description':'a','url':'b','x1':'x1a'}".replace('\'', '"'))
135 ;
136
137 @Test void c01_gettersAndSetters() {
138 TESTER.assertGettersAndSetters();
139 }
140
141 @Test void c02_copy() {
142 TESTER.assertCopy();
143 }
144
145 @Test void c03_toJson() {
146 TESTER.assertToJson();
147 }
148
149 @Test void c04_fromJson() {
150 TESTER.assertFromJson();
151 }
152
153 @Test void c05_roundTrip() {
154 TESTER.assertRoundTrip();
155 }
156
157 @Test void c06_toString() {
158 TESTER.assertToString();
159 }
160
161 @Test void c07_keySet() {
162 assertList(TESTER.bean().keySet(), "description", "url", "x1", "x2");
163 }
164
165 @Test void c08_get() {
166 assertMapped(
167 TESTER.bean(), (obj,prop) -> obj.get(prop, Object.class),
168 "description,url,x1,x2",
169 "a,b,x1a,<null>"
170 );
171 }
172
173 @Test void c09_getTypes() {
174 assertMapped(
175 TESTER.bean(), (obj,prop) -> cns(obj.get(prop, Object.class)),
176 "description,url,x1,x2",
177 "String,URI,String,<null>"
178 );
179 }
180
181 @Test void c10_nullPropertyValue() {
182 assertThrows(IllegalArgumentException.class, ()->bean().get(null));
183 assertThrows(IllegalArgumentException.class, ()->bean().get(null, String.class));
184 assertThrows(IllegalArgumentException.class, ()->bean().set(null, "a"));
185 }
186 }
187
188 @Nested class D_additionalMethods extends TestBase {
189
190 @Test void d01_asMap() {
191 assertBean(
192 bean()
193 .setDescription("a")
194 .set("x1", "x1a")
195 .asMap(),
196 "description,x1",
197 "a,x1a"
198 );
199 }
200
201 @Test void d02_extraKeys() {
202 var x = bean().set("x1", "x1a").set("x2", "x2a");
203 assertList(x.extraKeys(), "x1", "x2");
204 assertEmpty(bean().extraKeys());
205 }
206 }
207
208 @Nested class E_strictMode extends TestBase {
209
210 @Test void e01_strictModeSetThrowsException() {
211 var x = bean().strict();
212 assertThrows(RuntimeException.class, () -> x.set("foo", "bar"));
213 }
214
215 @Test void e02_nonStrictModeAllowsSet() {
216 var x = bean();
217 assertDoesNotThrow(() -> x.set("foo", "bar"));
218 }
219
220 @Test void e03_strictModeToggle() {
221 var x = bean();
222 assertFalse(x.isStrict());
223 x.strict();
224 assertTrue(x.isStrict());
225 x.strict(false);
226 assertFalse(x.isStrict());
227 }
228 }
229
230
231
232
233
234 private static ExternalDocumentation bean() {
235 return externalDocumentation();
236 }
237 }