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