@@ -1,12 +1,17 @@
package io.asfjava.ui.core.schema;
import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.hasSize;
import java.io.Serializable;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.asfjava.ui.core.GeneratorFactoryInitializer;
Expand All
@@ -18,7 +23,6 @@
import io.asfjava.ui.core.form.TextArea;
import io.asfjava.ui.core.form.TextField;
import io.asfjava.ui.dto.UiForm;
import io.asfjava.ui.test.JsonNodeAssert;
public class UiFormSchemaGeneratorTest {
Expand All
@@ -30,144 +34,138 @@ public static void init() {
@Test
public void testGenerate_textField() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.firstName.title", "First Name");
asserter.assertEquals("schema.properties.firstName.pattern", "[a-z]");
asserter.assertEquals("form.0.key", "firstName");
asserter.assertTrue("form.0.notitle");
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
asserter.assertEquals("form.0.description", "This is a description for your first name field");
asserter.assertEquals("form.0.placeholder", "Your first name");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name")));
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg")));
//Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].type",hasItem("textField")));
}
@Test
public void testGenerate_Number() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(NumberForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.number.title", "Number of children");
asserter.assertEquals("form.0.key", "number");
asserter.assertTrue("form.0.notitle");
asserter.assertTrue("form.0.readonly");
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
asserter.assertEquals("form.0.description", "This is a number");
asserter.assertEquals("form.0.placeholder", "Number of children");
String json = new ObjectMapper().writeValueAsString(ui);
//Assert.assertThat(json, hasJsonPath("$.schema.properties.number.title",equalTo("Number")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].description",hasItem("This is a number")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].placeholder",hasItem("Number of children")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].validationMessage",hasItem("this is a validation msg")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].type",hasItem("number")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].notitle",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='number')].readonly",hasItem(true)));
}
@Test
public void testGenerate_Password() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(PasswordForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.password.title", "Password");
asserter.assertEquals("form.0.key", "password");
asserter.assertTrue("form.0.notitle");
asserter.assertTrue("form.0.readonly");
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
asserter.assertEquals("form.0.description", "This is password");
asserter.assertEquals("form.0.placeholder", "Please set you password");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.password.title",equalTo("Password")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].description",hasItem("This is password")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].placeholder",hasItem("Please set you password")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].validationMessage",hasItem("this is a validation msg")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].type",hasItem("password")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].notitle",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].readonly",hasItem(true)));
}
@Test
public void testGenerate_TextArea() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(TextAreaForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.address.title", "Address");
asserter.assertEquals("form.0.key", "address");
asserter.assertTrue("form.0.notitle");
asserter.assertTrue("form.0.readonly");
asserter.assertEquals("form.0.validationMessage", "this is a validation msg");
asserter.assertEquals("form.0.description", "This is textarea");
asserter.assertEquals("form.0.placeholder", "Fill your address please");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.address.title",equalTo("Address")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].description",hasItem("This is textarea")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].placeholder",hasItem("Fill your address please")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].validationMessage",hasItem("this is a validation msg")));
//Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='password')].type",hasItem("textArea")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].notitle",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='address')].readonly",hasItem(true)));
}
@Test
public void testGenerate_CheckBox() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.color.title", "Color");
asserter.assertEquals("form.0.key", "color");
asserter.assertFalse("form.0.multiple");
asserter.assertTrue("form.0.required");
asserter.assertEquals("form.0.titleMap.0.name", "Red");
asserter.assertEquals("form.0.titleMap.0.value", "red");
asserter.assertEquals("form.0.titleMap.1.name", "Blue");
asserter.assertEquals("form.0.titleMap.1.value", "blue");
asserter.assertEquals("form.0.titleMap.2.name", "Green");
asserter.assertEquals("form.0.titleMap.2.value", "green");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.color.title",equalTo("Color")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].multiple",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].required",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[0].name",hasItem("Red")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[0].value",hasItem("red")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[1].name",hasItem("Blue")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[1].value",hasItem("blue")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[2].name",hasItem("Green")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[2].value",hasItem("green")));
}
@Test
public void testGenerate_CheckBox_WithCustomValuesContainer() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm2.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.color.title", "Color");
asserter.assertEquals("form.0.key", "color");
asserter.assertTrue("form.0.multiple");
asserter.assertFalse("form.0.required");
asserter.assertEquals("form.0.titleMap.0.name", "Red");
asserter.assertEquals("form.0.titleMap.0.value", "red");
asserter.assertEquals("form.0.titleMap.1.name", "Blue");
asserter.assertEquals("form.0.titleMap.1.value", "blue");
asserter.assertEquals("form.0.titleMap.2.name", "Green");
asserter.assertEquals("form.0.titleMap.2.value", "green");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.color.title",equalTo("Color")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].multiple",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].required",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Red')].value",hasItem("red")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Blue')].value",hasItem("blue")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='color')].titleMap[?(@.name=='Green')].value",hasItem("green")));
}
@Test
public void testGenerate_RadioBox() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(RadioBoxForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.civilState.title", "Civil State");
asserter.assertEquals("form.0.key", "civilState");
asserter.assertFalse("form.0.readonly");
asserter.assertEquals("form.0.titleMap.0.name", "Maried");
asserter.assertEquals("form.0.titleMap.0.value", "COMMITTED");
asserter.assertEquals("form.0.titleMap.1.name", "Single");
asserter.assertEquals("form.0.titleMap.1.value", "HAPPY");
asserter.assertEquals("form.0.titleMap.2.name", "Divorced");
asserter.assertEquals("form.0.titleMap.2.value", "RELEASED");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.civilState.title",equalTo("Civil State")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].readOnly",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Maried')].value",hasItem("COMMITTED")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Single')].value",hasItem("HAPPY")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='civilState')].titleMap[?(@.name=='Divorced')].value",hasItem("RELEASED")));
}
@Test
public void testGenerate_ComboBox() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(ComboBoxForm.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.currency.title", "Currency");
asserter.assertEquals("form.0.key", "currency");
asserter.assertFalse("form.0.autofocus");
asserter.assertFalse("form.0.disabled");
asserter.assertFalse("form.0.multiple");
asserter.assertTrue("form.0.required");
asserter.assertEquals("form.0.titleMap.0.name", "Euro");
asserter.assertEquals("form.0.titleMap.0.value", "euro");
asserter.assertEquals("form.0.titleMap.1.name", "Dollar");
asserter.assertEquals("form.0.titleMap.1.value", "dollar");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.currency.title",equalTo("Currency")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].disabled",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].multiple",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].required",hasItem(true)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].autofocus",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].titleMap[?(@.name=='Euro')].value",hasItem("euro")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='currency')].titleMap[?(@.name=='Dollar')].value",hasItem("dollar")));
}
@Test
public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcessingException {
UiForm ui = UiFormSchemaGenerator.get().generate(ComboBoxForm2.class);
JsonNode json = new ObjectMapper().valueToTree(ui);
JsonNodeAssert asserter = new JsonNodeAssert(json);
asserter.assertEquals("schema.properties.gender.title", "Gender");
asserter.assertEquals("form.0.key", "currency");
asserter.assertFalse("form.0.autofocus");
asserter.assertFalse("form.0.disabled");
asserter.assertFalse("form.0.multiple");
asserter.assertFalse("form.0.required");
asserter.assertEquals("form.0.titleMap.0.name", "Male");
asserter.assertEquals("form.0.titleMap.0.value", "male");
asserter.assertEquals("form.0.titleMap.1.name", "Female");
asserter.assertEquals("form.0.titleMap.1.value", "female");
String json = new ObjectMapper().writeValueAsString(ui);
Assert.assertThat(json, hasJsonPath("$.schema.properties.gender.title",equalTo("Gender")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].key",hasSize(1)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].disabled",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].multiple",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].required",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].autofocus",hasItem(false)));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Male')].value",hasItem("male")));
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Female')].value",hasItem("female")));
}
}
Expand Down
Expand Up
@@ -212,53 +210,52 @@ public String getAddress() {
}
}
class CheckBoxForm implements Serializable{
@CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red",required= true)
class CheckBoxForm implements Serializable{
@CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red",required = true)
private String color;
public String getColor(){
public String getColor(){
return color;
}
}
class CheckBoxForm2 implements Serializable{
@CheckBox(title = "Color", titleMap= MyCheckBoxValues.class, defaultvalue = "red",multiple= true)
class CheckBoxForm2 implements Serializable{
@CheckBox(title = "Color", titleMap = MyCheckBoxValues.class, defaultvalue = "red",multiple = true)
private String color;
public String getColor(){
public String getColor(){
return color;
}
}
class RadioBoxForm implements Serializable{
class RadioBoxForm implements Serializable{
@RadioBox(title = "Civil State", titleMap = CivilStateValues.class)
private String civilState;
public String getCivilState(){
public String getCivilState(){
return civilState;
}
}
class ComboBoxForm implements Serializable{
@ComboBox(title = "Currency", values = { "euro", "dollar" }, required= true)
class ComboBoxForm implements Serializable{
@ComboBox(title = "Currency", values = { "euro", "dollar" }, required = true)
private String currency;
public String getCurrency(){
public String getCurrency(){
return currency;
}
}
class ComboBoxForm2 implements Serializable{
class ComboBoxForm2 implements Serializable{
@ComboBox(title = "Gender", titleMap = GenderTitleMap.class)
private String gender;
public String getGender(){
public String getGender(){
return gender;
}
}