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 ServerVariable_Test extends TestBase {
30
31 @Nested class A_basicTests extends TestBase {
32
33 private static final BeanTester<ServerVariable> TESTER =
34 testBean(
35 bean()
36 .setDefault("a")
37 .setDescription("b")
38 .setEnum(list("c"))
39 )
40 .props("default,description,enum")
41 .vals("a,b,[c]")
42 .json("{'default':'a',description:'b','enum':['c']}")
43 .string("{'default':'a','description':'b','enum':['c']}".replace('\'','"'))
44 ;
45
46 @Test void a01_gettersAndSetters() {
47 TESTER.assertGettersAndSetters();
48 }
49
50 @Test void a02_copy() {
51 TESTER.assertCopy();
52 }
53
54 @Test void a03_toJson() {
55 TESTER.assertToJson();
56 }
57
58 @Test void a04_fromJson() {
59 TESTER.assertFromJson();
60 }
61
62 @Test void a05_roundTrip() {
63 TESTER.assertRoundTrip();
64 }
65
66 @Test void a06_toString() {
67 TESTER.assertToString();
68 }
69
70 @Test void a07_keySet() {
71 assertList(TESTER.bean().keySet(), "default", "description", "enum");
72 }
73
74 @Test void a08_nullParameters() {
75 var x = bean();
76 assertThrows(IllegalArgumentException.class, () -> x.get(null, String.class));
77 assertThrows(IllegalArgumentException.class, () -> x.set(null, "value"));
78 }
79
80 @Test void a09_addMethods() {
81 assertBean(
82 bean()
83 .addEnum("a1", "a2"),
84 "enum",
85 "[a1,a2]"
86 );
87 }
88
89 @Test void a10_asMap() {
90 assertBean(
91 bean()
92 .setDefault("a")
93 .set("x1", "x1a")
94 .asMap(),
95 "default,x1",
96 "a,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<ServerVariable> TESTER =
119 testBean(bean())
120 .props("enum,default,description")
121 .vals("<null>,<null>,<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<ServerVariable> TESTER =
157 testBean(
158 bean()
159 .set("default", "a")
160 .set("description", "b")
161 .set("enum", list("c1", "c2"))
162 .set("x1", "x1a")
163 .set("x2", null)
164 )
165 .props("default,description,enum{#{toString}},x1,x2")
166 .vals("a,b,{[{c1},{c2}]},x1a,<null>")
167 .json("{'default':'a',description:'b','enum':['c1','c2'],x1:'x1a'}")
168 .string("{'default':'a','description':'b','enum':['c1','c2'],'x1':'x1a'}".replace('\'', '"'))
169 ;
170
171 @Test void c01_gettersAndSetters() {
172 TESTER.assertGettersAndSetters();
173 }
174
175 @Test void c02_copy() {
176 TESTER.assertCopy();
177 }
178
179 @Test void c03_toJson() {
180 TESTER.assertToJson();
181 }
182
183 @Test void c04_fromJson() {
184 TESTER.assertFromJson();
185 }
186
187 @Test void c05_roundTrip() {
188 TESTER.assertRoundTrip();
189 }
190
191 @Test void c06_toString() {
192 TESTER.assertToString();
193 }
194
195 @Test void c07_keySet() {
196 assertList(TESTER.bean().keySet(), "default", "description", "enum", "x1", "x2");
197 }
198
199 @Test void c08_get() {
200 assertMapped(
201 TESTER.bean(), (obj,prop) -> obj.get(prop, Object.class),
202 "default,description,enum{#{toString}},x1,x2",
203 "a,b,{[{c1},{c2}]},x1a,<null>"
204 );
205 }
206
207 @Test void c09_getTypes() {
208 assertMapped(
209 TESTER.bean(), (obj,prop) -> simpleClassNameOf(obj.get(prop, Object.class)),
210 "default,description,enum,x1,x2",
211 "String,String,ArrayList,String,<null>"
212 );
213 }
214
215 @Test void c10_nullPropertyValue() {
216 assertThrows(IllegalArgumentException.class, ()->bean().get(null));
217 assertThrows(IllegalArgumentException.class, ()->bean().get(null, String.class));
218 assertThrows(IllegalArgumentException.class, ()->bean().set(null, "a"));
219 }
220 }
221
222
223
224
225
226 private static ServerVariable bean() {
227 return serverVariable();
228 }
229 }