From b6af5dc5fc44dbe8c535d7a9a457eaf9f485565f Mon Sep 17 00:00:00 2001 From: Hdebbech Date: Sat, 10 Jun 2017 15:07:55 +0100 Subject: [PATCH 1/5] Unit test --- .../java/io/asfjava/ui/core/GeneratorFactoryInitializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java b/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java index 09de369..a1ec7e1 100644 --- a/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java +++ b/src/main/java/io/asfjava/ui/core/GeneratorFactoryInitializer.java @@ -5,7 +5,7 @@ import javax.servlet.annotation.WebListener; @WebListener -class GeneratorFactoryInitializer implements ServletContextListener { +public class GeneratorFactoryInitializer implements ServletContextListener { @Override public final void contextInitialized(final ServletContextEvent sce) { From 0a5110831c68e8325b7ca6a3269a9c8bd85c6f83 Mon Sep 17 00:00:00 2001 From: Hdebbech Date: Sat, 10 Jun 2017 15:12:27 +0100 Subject: [PATCH 2/5] Unit Test --- .../decorator/NumberSchemaDecorator.java | 22 ++ .../ui/core/schema/CivilStateValues.java | 21 ++ .../ui/core/schema/GenderTitleMap.java | 18 ++ .../ui/core/schema/MyCheckBoxValues.java | 18 ++ .../schema/UiFormSchemaGeneratorTest.java | 264 ++++++++++++++++++ .../io/asfjava/ui/test/JsonNodeAssert.java | 55 ++++ 6 files changed, 398 insertions(+) create mode 100644 src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java create mode 100644 src/test/java/io/asfjava/ui/core/schema/CivilStateValues.java create mode 100644 src/test/java/io/asfjava/ui/core/schema/GenderTitleMap.java create mode 100644 src/test/java/io/asfjava/ui/core/schema/MyCheckBoxValues.java create mode 100644 src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java create mode 100644 src/test/java/io/asfjava/ui/test/JsonNodeAssert.java diff --git a/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java b/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java new file mode 100644 index 0000000..73e3a68 --- /dev/null +++ b/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java @@ -0,0 +1,22 @@ +package io.asfjava.ui.schema.decorator; + +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; +import com.fasterxml.jackson.module.jsonSchema.types.StringSchema; + +public class NumberSchemaDecorator implements SchemaDecorator{ + + @Override + public void customizeSchema(BeanProperty property, JsonSchema jsonschema) { + io.asfjava.ui.core.form.Number annotation = property.getAnnotation(io.asfjava.ui.core.form.Number.class); + if (annotation != null && annotation.title() != null) { + ((StringSchema) jsonschema).setTitle(annotation.title()); + } + } + + @Override + public String getAnnotation() { + return io.asfjava.ui.core.form.Number.class.getName(); + } + +} diff --git a/src/test/java/io/asfjava/ui/core/schema/CivilStateValues.java b/src/test/java/io/asfjava/ui/core/schema/CivilStateValues.java new file mode 100644 index 0000000..e54aff0 --- /dev/null +++ b/src/test/java/io/asfjava/ui/core/schema/CivilStateValues.java @@ -0,0 +1,21 @@ +package io.asfjava.ui.core.schema; + +import java.util.HashMap; +import java.util.Map; + +import io.asfjava.ui.core.form.ValuesContainer; + +public class CivilStateValues implements ValuesContainer { + + @Override + public Map getValues() { + + HashMap myMap = new HashMap<>(); + + myMap.put("Maried", "COMMITTED"); + myMap.put("Single", "HAPPY"); + myMap.put("Divorced", "RELEASED"); + + return myMap; + } +} diff --git a/src/test/java/io/asfjava/ui/core/schema/GenderTitleMap.java b/src/test/java/io/asfjava/ui/core/schema/GenderTitleMap.java new file mode 100644 index 0000000..8a2bea3 --- /dev/null +++ b/src/test/java/io/asfjava/ui/core/schema/GenderTitleMap.java @@ -0,0 +1,18 @@ +package io.asfjava.ui.core.schema; + +import java.util.HashMap; +import java.util.Map; + +import io.asfjava.ui.core.form.ValuesContainer; + +public class GenderTitleMap implements ValuesContainer { + + @Override + public Map getValues() { + HashMap values = new HashMap<>(); + values.put("Male", "male"); + values.put("Female", "female"); + return values; + } + +} diff --git a/src/test/java/io/asfjava/ui/core/schema/MyCheckBoxValues.java b/src/test/java/io/asfjava/ui/core/schema/MyCheckBoxValues.java new file mode 100644 index 0000000..8eff4b2 --- /dev/null +++ b/src/test/java/io/asfjava/ui/core/schema/MyCheckBoxValues.java @@ -0,0 +1,18 @@ +package io.asfjava.ui.core.schema; + +import java.util.HashMap; +import java.util.Map; + +import io.asfjava.ui.core.form.ValuesContainer; + +public class MyCheckBoxValues implements ValuesContainer { + + @Override + public Map getValues() { + Map values = new HashMap<>(); + values.put("Red", "red"); + values.put("Green", "green"); + values.put("Blue", "blue"); + return values; + } +} diff --git a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java new file mode 100644 index 0000000..f1be8e7 --- /dev/null +++ b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java @@ -0,0 +1,264 @@ +package io.asfjava.ui.core.schema; + +import java.io.Serializable; + +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; +import io.asfjava.ui.core.form.CheckBox; +import io.asfjava.ui.core.form.ComboBox; +import io.asfjava.ui.core.form.Number; +import io.asfjava.ui.core.form.Password; +import io.asfjava.ui.core.form.RadioBox; +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 { + + @BeforeClass + public static void init() { + new GeneratorFactoryInitializer().contextInitialized(null); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + @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"); + } + + + +} + +class TextFieldForm implements Serializable { + + @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") + private String firstName; + + public String getFirstName() { + return firstName; + } + +} + +class NumberForm implements Serializable { + + @Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number", noTitle = true, validationMessage = "this is a validation msg", readOnly = true) + private Integer number; + + public Integer getNumber() { + return number; + } +} + +class PasswordForm implements Serializable { + + @Password(title = "Password", placeHolder = "Please set you password", description = "This is password", noTitle = true, validationMessage = "this is a validation msg", readOnly = true) + private String password; + + public String getPassword() { + return password; + } +} + +class TextAreaForm implements Serializable { + + @TextArea(title = "Address", placeHolder = "Fill your address please", description = "This is textarea", noTitle = true, validationMessage = "this is a validation msg", readOnly = true) + private String address; + + public String getAddress() { + return address; + } +} + +class CheckBoxForm implements Serializable{ + + @CheckBox(title = "Color", values = { "red", "blue", "green" }, defaultvalue = "red",required=true) + private String color; + + public String getColor(){ + return color; + } +} + +class CheckBoxForm2 implements Serializable{ + + @CheckBox(title = "Color", titleMap=MyCheckBoxValues.class, defaultvalue = "red",multiple=true) + private String color; + + public String getColor(){ + return color; + } +} + +class RadioBoxForm implements Serializable{ + + @RadioBox(title = "Civil State", titleMap = CivilStateValues.class) + private String civilState; + + public String getCivilState(){ + return civilState; + } +} + +class ComboBoxForm implements Serializable{ + + @ComboBox(title = "Currency", values = { "euro", "dollar" }, required=true) + private String currency; + + public String getCurrency(){ + return currency; + } +} + +class ComboBoxForm2 implements Serializable{ + + @ComboBox(title = "Gender", titleMap = GenderTitleMap.class) + private String gender; + + public String getGender(){ + return gender; + } +} + diff --git a/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java b/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java new file mode 100644 index 0000000..3c307e2 --- /dev/null +++ b/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java @@ -0,0 +1,55 @@ +package io.asfjava.ui.test; + +import java.util.Arrays; +import java.util.Iterator; + +import org.junit.Assert; + +import com.fasterxml.jackson.databind.JsonNode; + +public class JsonNodeAssert { + + JsonNode actual; + + public JsonNodeAssert(JsonNode node) { + this.actual = node; + } + + public void assertEquals(String path, String expected){ + Assert.assertEquals(expected, traverse(actual, path).asText()); + } + + public void assertTrue(String path){ + Assert.assertTrue(traverse(actual, path).asBoolean()); + } + + public void assertFalse(String path){ + Assert.assertFalse(traverse(actual, path).asBoolean()); + } + + private JsonNode traverse(JsonNode node, String path) { + if (path == null || path.isEmpty()) { + return node; + } + String[] tokens = path.split("\\."); + Iterator itr = Arrays.asList(tokens).iterator(); + while (itr.hasNext()) { + String token = itr.next(); + if (isIndex(token)) { + node = node.path(Integer.parseInt(token)); + } else { + node = node.path(token); + } + if (node.isMissingNode()) { + Assert.fail("path: " + path + " does not exist in the given json node"); + } + } + + return node; + } + + private boolean isIndex(String path){ + return path.matches("\\d+"); + } + +} From fa523254f30b22ce5251806cbdc6def51cf93195 Mon Sep 17 00:00:00 2001 From: Hdebbech Date: Sat, 10 Jun 2017 18:02:49 +0100 Subject: [PATCH 3/5] fix compilation error --- .../decorator/NumberSchemaDecorator.java | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java diff --git a/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java b/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java deleted file mode 100644 index 73e3a68..0000000 --- a/src/main/java/io/asfjava/ui/schema/decorator/NumberSchemaDecorator.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.asfjava.ui.schema.decorator; - -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.module.jsonSchema.JsonSchema; -import com.fasterxml.jackson.module.jsonSchema.types.StringSchema; - -public class NumberSchemaDecorator implements SchemaDecorator{ - - @Override - public void customizeSchema(BeanProperty property, JsonSchema jsonschema) { - io.asfjava.ui.core.form.Number annotation = property.getAnnotation(io.asfjava.ui.core.form.Number.class); - if (annotation != null && annotation.title() != null) { - ((StringSchema) jsonschema).setTitle(annotation.title()); - } - } - - @Override - public String getAnnotation() { - return io.asfjava.ui.core.form.Number.class.getName(); - } - -} From 3efac63fcc8b9f5409ffce0362dea2c271c0212d Mon Sep 17 00:00:00 2001 From: Hdebbech Date: Sun, 11 Jun 2017 10:46:47 +0100 Subject: [PATCH 4/5] :art: Unit Test --- pom.xml | 6 + src/test/java/io/asfjava/ui/AppTest.java | 38 --- .../schema/UiFormSchemaGeneratorTest.java | 255 +++++++++--------- .../io/asfjava/ui/test/JsonNodeAssert.java | 55 ---- 4 files changed, 132 insertions(+), 222 deletions(-) delete mode 100644 src/test/java/io/asfjava/ui/AppTest.java delete mode 100644 src/test/java/io/asfjava/ui/test/JsonNodeAssert.java diff --git a/pom.xml b/pom.xml index 2a02de4..ef1fe52 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,12 @@ slf4j-api 1.7.25 + + com.jayway.jsonpath + json-path-assert + 2.2.0 + test + diff --git a/src/test/java/io/asfjava/ui/AppTest.java b/src/test/java/io/asfjava/ui/AppTest.java deleted file mode 100644 index 24100c4..0000000 --- a/src/test/java/io/asfjava/ui/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.asfjava.ui; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java index f1be8e7..bc69707 100644 --- a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java +++ b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java @@ -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; @@ -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 { @@ -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"))); + } - - } @@ -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; } } - diff --git a/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java b/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java deleted file mode 100644 index 3c307e2..0000000 --- a/src/test/java/io/asfjava/ui/test/JsonNodeAssert.java +++ /dev/null @@ -1,55 +0,0 @@ -package io.asfjava.ui.test; - -import java.util.Arrays; -import java.util.Iterator; - -import org.junit.Assert; - -import com.fasterxml.jackson.databind.JsonNode; - -public class JsonNodeAssert { - - JsonNode actual; - - public JsonNodeAssert(JsonNode node) { - this.actual = node; - } - - public void assertEquals(String path, String expected){ - Assert.assertEquals(expected, traverse(actual, path).asText()); - } - - public void assertTrue(String path){ - Assert.assertTrue(traverse(actual, path).asBoolean()); - } - - public void assertFalse(String path){ - Assert.assertFalse(traverse(actual, path).asBoolean()); - } - - private JsonNode traverse(JsonNode node, String path) { - if (path == null || path.isEmpty()) { - return node; - } - String[] tokens = path.split("\\."); - Iterator itr = Arrays.asList(tokens).iterator(); - while (itr.hasNext()) { - String token = itr.next(); - if (isIndex(token)) { - node = node.path(Integer.parseInt(token)); - } else { - node = node.path(token); - } - if (node.isMissingNode()) { - Assert.fail("path: " + path + " does not exist in the given json node"); - } - } - - return node; - } - - private boolean isIndex(String path){ - return path.matches("\\d+"); - } - -} From 6ae2f4fe5350c2f3cad30b3f516286e7b377524e Mon Sep 17 00:00:00 2001 From: Hdebbech Date: Sun, 11 Jun 2017 12:04:08 +0100 Subject: [PATCH 5/5] :art: polishing unit test --- .../schema/UiFormSchemaGeneratorTest.java | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java index bc69707..22f9be6 100644 --- a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java +++ b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java @@ -39,7 +39,7 @@ public void testGenerate_textField() throws JsonProcessingException { 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')]",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"))); @@ -52,7 +52,7 @@ public void testGenerate_Number() throws JsonProcessingException { UiForm ui = UiFormSchemaGenerator.get().generate(NumberForm.class); 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')]",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"))); @@ -68,7 +68,7 @@ public void testGenerate_Password() throws JsonProcessingException { 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')]",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"))); @@ -83,7 +83,7 @@ public void testGenerate_TextArea() throws JsonProcessingException { 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')]",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"))); @@ -98,15 +98,12 @@ public void testGenerate_CheckBox() throws JsonProcessingException { UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm.class); 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')]",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"))); + 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 @@ -114,7 +111,7 @@ public void testGenerate_CheckBox_WithCustomValuesContainer() throws JsonProcess UiForm ui = UiFormSchemaGenerator.get().generate(CheckBoxForm2.class); 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')]",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"))); @@ -127,7 +124,7 @@ public void testGenerate_RadioBox() throws JsonProcessingException { UiForm ui = UiFormSchemaGenerator.get().generate(RadioBoxForm.class); 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')]",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"))); @@ -141,7 +138,7 @@ public void testGenerate_ComboBox() throws JsonProcessingException { 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')]",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))); @@ -157,7 +154,7 @@ public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcess 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')]",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)));