Skip to content

Commit 3efac63

Browse files
committed
🎨 Unit Test
1 parent ed929d5 commit 3efac63

File tree

4 files changed

+132
-222
lines changed

4 files changed

+132
-222
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@
6767
<artifactId>slf4j-api</artifactId>
6868
<version>1.7.25</version>
6969
</dependency>
70+
<dependency>
71+
<groupId>com.jayway.jsonpath</groupId>
72+
<artifactId>json-path-assert</artifactId>
73+
<version>2.2.0</version>
74+
<scope>test</scope>
75+
</dependency>
7076

7177
</dependencies>
7278
<build>

src/test/java/io/asfjava/ui/AppTest.java

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 126 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package io.asfjava.ui.core.schema;
22

3+
import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
4+
import static org.hamcrest.Matchers.equalTo;
5+
import static org.hamcrest.Matchers.hasItem;
6+
import static org.hamcrest.Matchers.hasSize;
7+
38
import java.io.Serializable;
49

10+
import org.junit.Assert;
511
import org.junit.BeforeClass;
612
import org.junit.Test;
713

814
import com.fasterxml.jackson.core.JsonProcessingException;
9-
import com.fasterxml.jackson.databind.JsonNode;
1015
import com.fasterxml.jackson.databind.ObjectMapper;
1116

1217
import io.asfjava.ui.core.GeneratorFactoryInitializer;
@@ -18,7 +23,6 @@
1823
import io.asfjava.ui.core.form.TextArea;
1924
import io.asfjava.ui.core.form.TextField;
2025
import io.asfjava.ui.dto.UiForm;
21-
import io.asfjava.ui.test.JsonNodeAssert;
2226

2327
public class UiFormSchemaGeneratorTest {
2428

@@ -30,144 +34,138 @@ public static void init() {
3034
@Test
3135
public void testGenerate_textField() throws JsonProcessingException {
3236
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");
37+
String json = new ObjectMapper().writeValueAsString(ui);
38+
39+
40+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name")));
41+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]")));
42+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].key",hasSize(1)));
43+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field")));
44+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name")));
45+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg")));
46+
//Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].type",hasItem("textField")));
47+
4248
}
4349

4450
@Test
4551
public void testGenerate_Number() throws JsonProcessingException {
4652
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");
53+
String json = new ObjectMapper().writeValueAsString(ui);
54+
//Assert.assertThat(json, hasJsonPath("$.schema.properties.number.title",equalTo("Number")));
55+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].key",hasSize(1)));
56+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].description",hasItem("This is a number")));
57+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].placeholder",hasItem("Number of children")));
58+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].validationMessage",hasItem("this is a validation msg")));
59+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].type",hasItem("number")));
60+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].notitle",hasItem(true)));
61+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].readonly",hasItem(true)));
62+
5663
}
5764

5865
@Test
5966
public void testGenerate_Password() throws JsonProcessingException {
6067
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");
68+
69+
String json = new ObjectMapper().writeValueAsString(ui);
70+
Assert.assertThat(json, hasJsonPath("$.schema.properties.password.title",equalTo("Password")));
71+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].key",hasSize(1)));
72+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].description",hasItem("This is password")));
73+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].placeholder",hasItem("Please set you password")));
74+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].validationMessage",hasItem("this is a validation msg")));
75+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].type",hasItem("password")));
76+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].notitle",hasItem(true)));
77+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].readonly",hasItem(true)));
7078
}
71-
79+
7280
@Test
7381
public void testGenerate_TextArea() throws JsonProcessingException {
7482
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");
83+
84+
String json = new ObjectMapper().writeValueAsString(ui);
85+
Assert.assertThat(json, hasJsonPath("$.schema.properties.address.title",equalTo("Address")));
86+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].key",hasSize(1)));
87+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].description",hasItem("This is textarea")));
88+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].placeholder",hasItem("Fill your address please")));
89+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].validationMessage",hasItem("this is a validation msg")));
90+
//Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].type",hasItem("textArea")));
91+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].notitle",hasItem(true)));
92+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].readonly",hasItem(true)));
93+
8494
}
85-
95+
8696
@Test
8797
public void testGenerate_CheckBox() throws JsonProcessingException {
8898
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");
99+
String json = new ObjectMapper().writeValueAsString(ui);
100+
Assert.assertThat(json, hasJsonPath("$.schema.properties.color.title",equalTo("Color")));
101+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].key",hasSize(1)));
102+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].multiple",hasItem(false)));
103+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].required",hasItem(true)));
104+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[0].name",hasItem("Red")));
105+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[0].value",hasItem("red")));
106+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[1].name",hasItem("Blue")));
107+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[1].value",hasItem("blue")));
108+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[2].name",hasItem("Green")));
109+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[2].value",hasItem("green")));
101110
}
102-
111+
103112
@Test
104113
public void testGenerate_CheckBox_WithCustomValuesContainer() throws JsonProcessingException {
105114
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");
115+
String json = new ObjectMapper().writeValueAsString(ui);
116+
Assert.assertThat(json, hasJsonPath("$.schema.properties.color.title",equalTo("Color")));
117+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].key",hasSize(1)));
118+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].multiple",hasItem(true)));
119+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].required",hasItem(false)));
120+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Red')].value",hasItem("red")));
121+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Blue')].value",hasItem("blue")));
122+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Green')].value",hasItem("green")));
118123
}
119-
124+
120125
@Test
121126
public void testGenerate_RadioBox() throws JsonProcessingException {
122127
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");
128+
String json = new ObjectMapper().writeValueAsString(ui);
129+
Assert.assertThat(json, hasJsonPath("$.schema.properties.civilState.title",equalTo("Civil State")));
130+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].key",hasSize(1)));
131+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].readOnly",hasItem(false)));
132+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Maried')].value",hasItem("COMMITTED")));
133+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Single')].value",hasItem("HAPPY")));
134+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Divorced')].value",hasItem("RELEASED")));
135+
134136
}
135-
137+
136138
@Test
137139
public void testGenerate_ComboBox() throws JsonProcessingException {
138140
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");
141+
142+
String json = new ObjectMapper().writeValueAsString(ui);
143+
Assert.assertThat(json, hasJsonPath("$.schema.properties.currency.title",equalTo("Currency")));
144+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].key",hasSize(1)));
145+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].disabled",hasItem(false)));
146+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].multiple",hasItem(false)));
147+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].required",hasItem(true)));
148+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].autofocus",hasItem(false)));
149+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].titleMap[?(@.name=='Euro')].value",hasItem("euro")));
150+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].titleMap[?(@.name=='Dollar')].value",hasItem("dollar")));
151+
151152
}
152-
153+
153154
@Test
154155
public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcessingException {
155156
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");
157+
158+
String json = new ObjectMapper().writeValueAsString(ui);
159+
Assert.assertThat(json, hasJsonPath("$.schema.properties.gender.title",equalTo("Gender")));
160+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].key",hasSize(1)));
161+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].disabled",hasItem(false)));
162+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].multiple",hasItem(false)));
163+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].required",hasItem(false)));
164+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].autofocus",hasItem(false)));
165+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Male')].value",hasItem("male")));
166+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Female')].value",hasItem("female")));
167+
168168
}
169-
170-
171169

172170
}
173171

@@ -212,53 +210,52 @@ public String getAddress() {
212210
}
213211
}
214212

215-
class CheckBoxForm implements Serializable{
216-
217-
@CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red",required=true)
213+
class CheckBoxForm implements Serializable {
214+
215+
@CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red", required = true)
218216
private String color;
219-
220-
public String getColor(){
217+
218+
public String getColor() {
221219
return color;
222220
}
223221
}
224222

225-
class CheckBoxForm2 implements Serializable{
226-
227-
@CheckBox(title = "Color", titleMap=MyCheckBoxValues.class, defaultvalue = "red",multiple=true)
223+
class CheckBoxForm2 implements Serializable {
224+
225+
@CheckBox(title = "Color", titleMap = MyCheckBoxValues.class, defaultvalue = "red", multiple = true)
228226
private String color;
229-
230-
public String getColor(){
227+
228+
public String getColor() {
231229
return color;
232230
}
233231
}
234232

235-
class RadioBoxForm implements Serializable{
236-
233+
class RadioBoxForm implements Serializable {
234+
237235
@RadioBox(title = "Civil State", titleMap = CivilStateValues.class)
238236
private String civilState;
239-
240-
public String getCivilState(){
237+
238+
public String getCivilState() {
241239
return civilState;
242240
}
243241
}
244242

245-
class ComboBoxForm implements Serializable{
246-
247-
@ComboBox(title = "Currency", values = { "euro", "dollar" }, required=true)
243+
class ComboBoxForm implements Serializable {
244+
245+
@ComboBox(title = "Currency", values = { "euro", "dollar" }, required = true)
248246
private String currency;
249-
250-
public String getCurrency(){
247+
248+
public String getCurrency() {
251249
return currency;
252250
}
253251
}
254252

255-
class ComboBoxForm2 implements Serializable{
256-
253+
class ComboBoxForm2 implements Serializable {
254+
257255
@ComboBox(title = "Gender", titleMap = GenderTitleMap.class)
258256
private String gender;
259-
260-
public String getGender(){
257+
258+
public String getGender() {
261259
return gender;
262260
}
263261
}
264-

0 commit comments

Comments
 (0)