Skip to content

Commit 0a51108

Browse files
committed
Unit Test
1 parent b6af5dc commit 0a51108

File tree

6 files changed

+398
-0
lines changed

6 files changed

+398
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.asfjava.ui.schema.decorator;
2+
3+
import com.fasterxml.jackson.databind.BeanProperty;
4+
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
5+
import com.fasterxml.jackson.module.jsonSchema.types.StringSchema;
6+
7+
public class NumberSchemaDecorator implements SchemaDecorator{
8+
9+
@Override
10+
public void customizeSchema(BeanProperty property, JsonSchema jsonschema) {
11+
io.asfjava.ui.core.form.Number annotation = property.getAnnotation(io.asfjava.ui.core.form.Number.class);
12+
if (annotation != null && annotation.title() != null) {
13+
((StringSchema) jsonschema).setTitle(annotation.title());
14+
}
15+
}
16+
17+
@Override
18+
public String getAnnotation() {
19+
return io.asfjava.ui.core.form.Number.class.getName();
20+
}
21+
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.asfjava.ui.core.schema;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import io.asfjava.ui.core.form.ValuesContainer;
7+
8+
public class CivilStateValues implements ValuesContainer {
9+
10+
@Override
11+
public Map<String, String> getValues() {
12+
13+
HashMap<String, String> myMap = new HashMap<>();
14+
15+
myMap.put("Maried", "COMMITTED");
16+
myMap.put("Single", "HAPPY");
17+
myMap.put("Divorced", "RELEASED");
18+
19+
return myMap;
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.asfjava.ui.core.schema;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import io.asfjava.ui.core.form.ValuesContainer;
7+
8+
public class GenderTitleMap implements ValuesContainer {
9+
10+
@Override
11+
public Map<String, String> getValues() {
12+
HashMap<String, String> values = new HashMap<>();
13+
values.put("Male", "male");
14+
values.put("Female", "female");
15+
return values;
16+
}
17+
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.asfjava.ui.core.schema;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import io.asfjava.ui.core.form.ValuesContainer;
7+
8+
public class MyCheckBoxValues implements ValuesContainer {
9+
10+
@Override
11+
public Map<String, String> getValues() {
12+
Map<String, String> values = new HashMap<>();
13+
values.put("Red", "red");
14+
values.put("Green", "green");
15+
values.put("Blue", "blue");
16+
return values;
17+
}
18+
}
Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
package io.asfjava.ui.core.schema;
2+
3+
import java.io.Serializable;
4+
5+
import org.junit.BeforeClass;
6+
import org.junit.Test;
7+
8+
import com.fasterxml.jackson.core.JsonProcessingException;
9+
import com.fasterxml.jackson.databind.JsonNode;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
12+
import io.asfjava.ui.core.GeneratorFactoryInitializer;
13+
import io.asfjava.ui.core.form.CheckBox;
14+
import io.asfjava.ui.core.form.ComboBox;
15+
import io.asfjava.ui.core.form.Number;
16+
import io.asfjava.ui.core.form.Password;
17+
import io.asfjava.ui.core.form.RadioBox;
18+
import io.asfjava.ui.core.form.TextArea;
19+
import io.asfjava.ui.core.form.TextField;
20+
import io.asfjava.ui.dto.UiForm;
21+
import io.asfjava.ui.test.JsonNodeAssert;
22+
23+
public class UiFormSchemaGeneratorTest {
24+
25+
@BeforeClass
26+
public static void init() {
27+
new GeneratorFactoryInitializer().contextInitialized(null);
28+
}
29+
30+
@Test
31+
public void testGenerate_textField() throws JsonProcessingException {
32+
UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm.class);
33+
JsonNode json = new ObjectMapper().valueToTree(ui);
34+
JsonNodeAssert asserter = new JsonNodeAssert(json);
35+
asserter.assertEquals("schema.properties.firstName.title", "First Name");
36+
asserter.assertEquals("schema.properties.firstName.pattern", "[a-z]");
37+
asserter.assertEquals("form.0.key", "firstName");
38+
asserter.assertTrue("form.0.notitle");
39+
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
40+
asserter.assertEquals("form.0.description", "This is a description for your first name field");
41+
asserter.assertEquals("form.0.placeholder", "Your first name");
42+
}
43+
44+
@Test
45+
public void testGenerate_Number() throws JsonProcessingException {
46+
UiForm ui = UiFormSchemaGenerator.get().generate(NumberForm.class);
47+
JsonNode json = new ObjectMapper().valueToTree(ui);
48+
JsonNodeAssert asserter = new JsonNodeAssert(json);
49+
asserter.assertEquals("schema.properties.number.title", "Number of children");
50+
asserter.assertEquals("form.0.key", "number");
51+
asserter.assertTrue("form.0.notitle");
52+
asserter.assertTrue("form.0.readonly");
53+
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
54+
asserter.assertEquals("form.0.description", "This is a number");
55+
asserter.assertEquals("form.0.placeholder", "Number of children");
56+
}
57+
58+
@Test
59+
public void testGenerate_Password() throws JsonProcessingException {
60+
UiForm ui = UiFormSchemaGenerator.get().generate(PasswordForm.class);
61+
JsonNode json = new ObjectMapper().valueToTree(ui);
62+
JsonNodeAssert asserter = new JsonNodeAssert(json);
63+
asserter.assertEquals("schema.properties.password.title", "Password");
64+
asserter.assertEquals("form.0.key", "password");
65+
asserter.assertTrue("form.0.notitle");
66+
asserter.assertTrue("form.0.readonly");
67+
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
68+
asserter.assertEquals("form.0.description", "This is password");
69+
asserter.assertEquals("form.0.placeholder", "Please set you password");
70+
}
71+
72+
@Test
73+
public void testGenerate_TextArea() throws JsonProcessingException {
74+
UiForm ui = UiFormSchemaGenerator.get().generate(TextAreaForm.class);
75+
JsonNode json = new ObjectMapper().valueToTree(ui);
76+
JsonNodeAssert asserter = new JsonNodeAssert(json);
77+
asserter.assertEquals("schema.properties.address.title", "Address");
78+
asserter.assertEquals("form.0.key", "address");
79+
asserter.assertTrue("form.0.notitle");
80+
asserter.assertTrue("form.0.readonly");
81+
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
82+
asserter.assertEquals("form.0.description", "This is textarea");
83+
asserter.assertEquals("form.0.placeholder", "Fill your address please");
84+
}
85+
86+
@Test
87+
public void testGenerate_CheckBox() throws JsonProcessingException {
88+
UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm.class);
89+
JsonNode json = new ObjectMapper().valueToTree(ui);
90+
JsonNodeAssert asserter = new JsonNodeAssert(json);
91+
asserter.assertEquals("schema.properties.color.title", "Color");
92+
asserter.assertEquals("form.0.key", "color");
93+
asserter.assertFalse("form.0.multiple");
94+
asserter.assertTrue("form.0.required");
95+
asserter.assertEquals("form.0.titleMap.0.name", "Red");
96+
asserter.assertEquals("form.0.titleMap.0.value", "red");
97+
asserter.assertEquals("form.0.titleMap.1.name", "Blue");
98+
asserter.assertEquals("form.0.titleMap.1.value", "blue");
99+
asserter.assertEquals("form.0.titleMap.2.name", "Green");
100+
asserter.assertEquals("form.0.titleMap.2.value", "green");
101+
}
102+
103+
@Test
104+
public void testGenerate_CheckBox_WithCustomValuesContainer() throws JsonProcessingException {
105+
UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm2.class);
106+
JsonNode json = new ObjectMapper().valueToTree(ui);
107+
JsonNodeAssert asserter = new JsonNodeAssert(json);
108+
asserter.assertEquals("schema.properties.color.title", "Color");
109+
asserter.assertEquals("form.0.key", "color");
110+
asserter.assertTrue("form.0.multiple");
111+
asserter.assertFalse("form.0.required");
112+
asserter.assertEquals("form.0.titleMap.0.name", "Red");
113+
asserter.assertEquals("form.0.titleMap.0.value", "red");
114+
asserter.assertEquals("form.0.titleMap.1.name", "Blue");
115+
asserter.assertEquals("form.0.titleMap.1.value", "blue");
116+
asserter.assertEquals("form.0.titleMap.2.name", "Green");
117+
asserter.assertEquals("form.0.titleMap.2.value", "green");
118+
}
119+
120+
@Test
121+
public void testGenerate_RadioBox() throws JsonProcessingException {
122+
UiForm ui = UiFormSchemaGenerator.get().generate(RadioBoxForm.class);
123+
JsonNode json = new ObjectMapper().valueToTree(ui);
124+
JsonNodeAssert asserter = new JsonNodeAssert(json);
125+
asserter.assertEquals("schema.properties.civilState.title", "Civil State");
126+
asserter.assertEquals("form.0.key", "civilState");
127+
asserter.assertFalse("form.0.readonly");
128+
asserter.assertEquals("form.0.titleMap.0.name", "Maried");
129+
asserter.assertEquals("form.0.titleMap.0.value", "COMMITTED");
130+
asserter.assertEquals("form.0.titleMap.1.name", "Single");
131+
asserter.assertEquals("form.0.titleMap.1.value", "HAPPY");
132+
asserter.assertEquals("form.0.titleMap.2.name", "Divorced");
133+
asserter.assertEquals("form.0.titleMap.2.value", "RELEASED");
134+
}
135+
136+
@Test
137+
public void testGenerate_ComboBox() throws JsonProcessingException {
138+
UiForm ui = UiFormSchemaGenerator.get().generate(ComboBoxForm.class);
139+
JsonNode json = new ObjectMapper().valueToTree(ui);
140+
JsonNodeAssert asserter = new JsonNodeAssert(json);
141+
asserter.assertEquals("schema.properties.currency.title", "Currency");
142+
asserter.assertEquals("form.0.key", "currency");
143+
asserter.assertFalse("form.0.autofocus");
144+
asserter.assertFalse("form.0.disabled");
145+
asserter.assertFalse("form.0.multiple");
146+
asserter.assertTrue("form.0.required");
147+
asserter.assertEquals("form.0.titleMap.0.name", "Euro");
148+
asserter.assertEquals("form.0.titleMap.0.value", "euro");
149+
asserter.assertEquals("form.0.titleMap.1.name", "Dollar");
150+
asserter.assertEquals("form.0.titleMap.1.value", "dollar");
151+
}
152+
153+
@Test
154+
public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcessingException {
155+
UiForm ui = UiFormSchemaGenerator.get().generate(ComboBoxForm2.class);
156+
JsonNode json = new ObjectMapper().valueToTree(ui);
157+
JsonNodeAssert asserter = new JsonNodeAssert(json);
158+
asserter.assertEquals("schema.properties.gender.title", "Gender");
159+
asserter.assertEquals("form.0.key", "currency");
160+
asserter.assertFalse("form.0.autofocus");
161+
asserter.assertFalse("form.0.disabled");
162+
asserter.assertFalse("form.0.multiple");
163+
asserter.assertFalse("form.0.required");
164+
asserter.assertEquals("form.0.titleMap.0.name", "Male");
165+
asserter.assertEquals("form.0.titleMap.0.value", "male");
166+
asserter.assertEquals("form.0.titleMap.1.name", "Female");
167+
asserter.assertEquals("form.0.titleMap.1.value", "female");
168+
}
169+
170+
171+
172+
}
173+
174+
class TextFieldForm implements Serializable {
175+
176+
@TextField(title = "First Name", placeHolder = "Your first name", pattern = "[a-z]", noTitle = true, validationMessage = "this is a validation msg", description = "This is a description for your first name field")
177+
private String firstName;
178+
179+
public String getFirstName() {
180+
return firstName;
181+
}
182+
183+
}
184+
185+
class NumberForm implements Serializable {
186+
187+
@Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number", noTitle = true, validationMessage = "this is a validation msg", readOnly = true)
188+
private Integer number;
189+
190+
public Integer getNumber() {
191+
return number;
192+
}
193+
}
194+
195+
class PasswordForm implements Serializable {
196+
197+
@Password(title = "Password", placeHolder = "Please set you password", description = "This is password", noTitle = true, validationMessage = "this is a validation msg", readOnly = true)
198+
private String password;
199+
200+
public String getPassword() {
201+
return password;
202+
}
203+
}
204+
205+
class TextAreaForm implements Serializable {
206+
207+
@TextArea(title = "Address", placeHolder = "Fill your address please", description = "This is textarea", noTitle = true, validationMessage = "this is a validation msg", readOnly = true)
208+
private String address;
209+
210+
public String getAddress() {
211+
return address;
212+
}
213+
}
214+
215+
class CheckBoxForm implements Serializable{
216+
217+
@CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red",required=true)
218+
private String color;
219+
220+
public String getColor(){
221+
return color;
222+
}
223+
}
224+
225+
class CheckBoxForm2 implements Serializable{
226+
227+
@CheckBox(title = "Color", titleMap=MyCheckBoxValues.class, defaultvalue = "red",multiple=true)
228+
private String color;
229+
230+
public String getColor(){
231+
return color;
232+
}
233+
}
234+
235+
class RadioBoxForm implements Serializable{
236+
237+
@RadioBox(title = "Civil State", titleMap = CivilStateValues.class)
238+
private String civilState;
239+
240+
public String getCivilState(){
241+
return civilState;
242+
}
243+
}
244+
245+
class ComboBoxForm implements Serializable{
246+
247+
@ComboBox(title = "Currency", values = { "euro", "dollar" }, required=true)
248+
private String currency;
249+
250+
public String getCurrency(){
251+
return currency;
252+
}
253+
}
254+
255+
class ComboBoxForm2 implements Serializable{
256+
257+
@ComboBox(title = "Gender", titleMap = GenderTitleMap.class)
258+
private String gender;
259+
260+
public String getGender(){
261+
return gender;
262+
}
263+
}
264+

0 commit comments

Comments
 (0)