diff --git a/src/main/java/com/contentful/java/cma/model/CMAField.java b/src/main/java/com/contentful/java/cma/model/CMAField.java index 570169e4..6ed6c22c 100644 --- a/src/main/java/com/contentful/java/cma/model/CMAField.java +++ b/src/main/java/com/contentful/java/cma/model/CMAField.java @@ -39,6 +39,9 @@ public class CMAField { // Validations List validations; + // Required + Boolean required; + /** * Sets the ID for this field. * Returns this {@code CMAField} instance @@ -85,6 +88,20 @@ public CMAField setValidations(List validations) { return this; } + /** + * Sets the {@code required} attribute of this field. + * @param required boolean indicating whether or not this field is required + * Returns this {@code CMAField} instance + */ + public CMAField setRequired(boolean required) { + if (required) { + this.required = true; + } else { + this.required = null; + } + return this; + } + /** * Returns the {@code id} attribute of this field. */ @@ -119,4 +136,14 @@ public String getLinkType() { public List getValidations() { return validations; } + + /** + * Returns the {@code required} attribute of this field. + */ + public boolean isRequired() { + if (required == null) { + return false; + } + return required; + } } diff --git a/src/test/kotlin/com/contentful/java/cma/ContentTypeTests.kt b/src/test/kotlin/com/contentful/java/cma/ContentTypeTests.kt index 93991f90..56c0514d 100644 --- a/src/test/kotlin/com/contentful/java/cma/ContentTypeTests.kt +++ b/src/test/kotlin/com/contentful/java/cma/ContentTypeTests.kt @@ -42,7 +42,8 @@ class ContentTypeTests : BaseTest() { .setDisplayField("df") .addField(CMAField().setId("f1") .setName("field1") - .setType(CMAFieldType.Text)) + .setType(CMAFieldType.Text) + .setRequired(true)) .addField(CMAField().setId("f2") .setName("field2") .setType(CMAFieldType.Number)), @@ -54,6 +55,7 @@ class ContentTypeTests : BaseTest() { assertEquals("/spaces/spaceid/content_types", recordedRequest.getPath()) assertJsonEquals(requestBody, recordedRequest.getBodyAsString()) assertEquals(2, result.getFields().size) + assertTrue(result.getFields()[0].isRequired()) } test fun testCreateWithId() { @@ -70,7 +72,8 @@ class ContentTypeTests : BaseTest() { .setFields(listOf( CMAField().setId("f1") .setName("field1") - .setType(CMAFieldType.Text), + .setType(CMAFieldType.Text) + .setRequired(true), CMAField().setId("f2") .setName("field2") .setType(CMAFieldType.Number)) @@ -83,6 +86,7 @@ class ContentTypeTests : BaseTest() { assertJsonEquals(requestBody, recordedRequest.getBodyAsString()) assertEquals(2, result.getFields().size) assertEquals("df", result.getDisplayField()) + assertTrue(result.getFields()[0].isRequired()) } test fun testCreateWithLink() { @@ -126,7 +130,7 @@ class ContentTypeTests : BaseTest() { contentType, TestCallback()) as TestCallback) assertEquals(3, contentType.getFields().size) - assertNotNull(contentType.getFields().get(0).getValidations()) + assertNotNull(contentType.getFields()[0].getValidations()) // Request val recordedRequest = server!!.takeRequest() @@ -312,4 +316,11 @@ class ContentTypeTests : BaseTest() { throw e } } + + test fun testContentTypeSetRequiredFalse() { + val contentType = CMAContentType().addField(CMAField().setId("id").setRequired(false)) + assertFalse(contentType.getFields()[0].isRequired()) + assertJsonEquals("""{"fields":[{"id":"id"}]}""", + gson!!.toJson(contentType, javaClass())) + } } \ No newline at end of file diff --git a/src/test/resources/content_type_create_request.json b/src/test/resources/content_type_create_request.json index 10289c7b..0983a549 100644 --- a/src/test/resources/content_type_create_request.json +++ b/src/test/resources/content_type_create_request.json @@ -1 +1 @@ -{"name":"whatever1","displayField":"df","fields":[{"id":"f1","name":"field1","type":"Text"},{"id":"f2","name":"field2","type":"Number"}]} \ No newline at end of file +{"name":"whatever1","displayField":"df","fields":[{"id":"f1","name":"field1","type":"Text","required":true},{"id":"f2","name":"field2","type":"Number"}]} \ No newline at end of file diff --git a/src/test/resources/content_type_create_response.json b/src/test/resources/content_type_create_response.json index fc06a21e..118313c7 100644 --- a/src/test/resources/content_type_create_response.json +++ b/src/test/resources/content_type_create_response.json @@ -5,7 +5,8 @@ { "id": "f1", "name": "field1", - "type": "Text" + "type": "Text", + "required": true }, { "id": "f2",