Mathijs den Burger pushed to branch feature/CC-CHANNELMGR-1520 at cms-community 
/ hippo-addon-channel-manager


Commits:
71de9731 by Mathijs den Burger at 2018-02-09T16:38:48+01:00
CHANNELMGR-1520 Include field info of empty (invalid) compounds

A compound may be empty, which makes it invalid, so it is not included
in the document type. However, the compound may be empty because it
only contains unsupported fields. This fields information of such
a compound should therefore be added, otherwise those unsupported fields
are not reported nor included in the overall fields information. This
means that the fields information when initializing a field should
always be added, regardless whether the field is valid, since it may
contain information about other unsupported fields.

- - - - -


2 changed files:

- 
content-service/src/main/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtils.java
- 
content-service/src/test/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtilsTest.java


Changes:

=====================================
content-service/src/main/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtils.java
=====================================
--- 
a/content-service/src/main/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtils.java
+++ 
b/content-service/src/main/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtils.java
@@ -182,8 +182,10 @@ public class FieldTypeUtils {
         if (result.isPresent()) {
             final FieldType fieldType = result.get();
             final FieldsInformation fieldInfo = fieldType.init(context);
+
+            allFieldsInfo.add(fieldInfo);
+
             if (fieldType.isValid()) {
-                allFieldsInfo.add(fieldInfo);
                 return result;
             }
 


=====================================
content-service/src/test/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtilsTest.java
=====================================
--- 
a/content-service/src/test/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtilsTest.java
+++ 
b/content-service/src/test/java/org/onehippo/cms/channelmanager/content/documenttype/field/FieldTypeUtilsTest.java
@@ -577,6 +577,42 @@ public class FieldTypeUtilsTest {
     }
 
     @Test
+    public void populateFieldsInvalidCompoundField() {
+        final List<FieldType> fields = new ArrayList<>();
+        final FieldSorter sorter = createMock(FieldSorter.class);
+        final ContentTypeContext context = 
createMock(ContentTypeContext.class);
+        final ContentType contentType = createMock(ContentType.class);
+        final FieldTypeContext fieldContext = 
createMock(FieldTypeContext.class);
+        final ContentTypeItem item = createMock(ContentTypeItem.class);
+        final Node node = createMock(Node.class);
+        final CompoundFieldType fieldType = 
createMock(CompoundFieldType.class);
+
+        expect(context.getContentTypeRoot()).andReturn(null);
+        
expect(NamespaceUtils.retrieveFieldSorter(null)).andReturn(Optional.of(sorter));
+        
expect(sorter.sortFields(context)).andReturn(Collections.singletonList(fieldContext));
+        expect(fieldContext.getContentTypeItem()).andReturn(item).anyTimes();
+        
expect(item.getItemType()).andReturn("project:compoundtype").anyTimes();
+        expect(item.isProperty()).andReturn(false);
+        expect(ChoiceFieldUtils.isChoiceField(fieldContext)).andReturn(false);
+        
expect(ContentTypeContext.getContentType("project:compoundtype")).andReturn(Optional.of(contentType));
+        expect(contentType.isCompoundType()).andReturn(true);
+        
expect(fieldContext.getEditorConfigNode()).andReturn(Optional.of(node));
+        
expect(NamespaceUtils.getPluginClassForField(node)).andReturn(Optional.of(COMPOUND_FIELD_PLUGIN));
+        
expect(FieldTypeFactory.createFieldType(CompoundFieldType.class)).andReturn(Optional.of(fieldType));
+        
expect(fieldType.init(fieldContext)).andReturn(FieldsInformation.noneSupported());
+        expect(fieldType.isValid()).andReturn(false);
+        expect(fieldType.hasUnsupportedValidator()).andReturn(false);
+        replayAll();
+
+        final FieldsInformation fieldsInfo = 
FieldTypeUtils.populateFields(fields, context);
+        assertFalse(fieldsInfo.isAllFieldsIncluded());
+        assertFalse(fieldsInfo.getCanCreateAllRequiredFields());
+        assertTrue(fieldsInfo.getUnsupportedFieldTypes().isEmpty());
+        assertTrue(fields.isEmpty());
+        verifyAll();
+    }
+
+    @Test
     public void populateFieldsChoiceField() {
         final List<FieldType> fields = new ArrayList<>();
         final FieldSorter sorter = createMock(FieldSorter.class);



View it on GitLab: 
https://code.onehippo.org/cms-community/hippo-addon-channel-manager/commit/71de97317a2b4ff12c48b2ae5e8e4e86ae107f58

---
View it on GitLab: 
https://code.onehippo.org/cms-community/hippo-addon-channel-manager/commit/71de97317a2b4ff12c48b2ae5e8e4e86ae107f58
You're receiving this email because of your account on code.onehippo.org.
_______________________________________________
Hippocms-svn mailing list
Hippocms-svn@lists.onehippo.org
https://lists.onehippo.org/mailman/listinfo/hippocms-svn

Reply via email to