@Test
  public void testGetFieldsFromContentWithLinkToLayoutElement() throws Exception {

    Fields expectedFields = new Fields();

    Map<String, Layout> layoutsMap = getLayoutsMap();

    Field linkToLayoutField = getLinkToLayoutField(_ddmStructure.getStructureId(), layoutsMap);

    expectedFields.put(linkToLayoutField);

    StringBundler sb = new StringBundler();

    sb.append("link_to_layout_INSTANCE_MiO7vIJu,");
    sb.append("link_to_layout_INSTANCE_9FLzJNUX,");
    sb.append("link_to_layout_INSTANCE_WqABvmxw,");
    sb.append("link_to_layout_INSTANCE_31abnWkB,");
    sb.append("link_to_layout_INSTANCE_pWIUF15B,");
    sb.append("link_to_layout_INSTANCE_OGQypdcj,");
    sb.append("link_to_layout_INSTANCE_TB2XZ3wn,");
    sb.append("link_to_layout_INSTANCE_3IRNS4jM");

    Field fieldsDisplayField = getFieldsDisplayField(_ddmStructure.getStructureId(), sb.toString());

    expectedFields.put(fieldsDisplayField);

    String content =
        replaceLinksToLayoutsParameters(
            read("test-journal-content-link-to-page-field.xml"), layoutsMap);

    Fields actualFields = JournalConverterUtil.getDDMFields(_ddmStructure, content);

    Assert.assertEquals(expectedFields, actualFields);
  }
  @Test
  public void testGetContentFromLinkToLayoutField() throws Exception {
    Fields fields = new Fields();

    Map<String, Layout> layouts = getLayoutsMap();

    Field linkToLayoutField = getLinkToLayoutField(_ddmStructure.getStructureId(), layouts);

    fields.put(linkToLayoutField);

    Field fieldsDisplayField =
        getFieldsDisplayField(
            _ddmStructure.getStructureId(),
            "link_to_layout_INSTANCE_MiO7vIJu,"
                + "link_to_layout_INSTANCE_9FLzJNUX,"
                + "link_to_layout_INSTANCE_WqABvmxw,"
                + "link_to_layout_INSTANCE_31abnWkB,"
                + "link_to_layout_INSTANCE_pWIUF15B,"
                + "link_to_layout_INSTANCE_OGQypdcj,"
                + "link_to_layout_INSTANCE_TB2XZ3wn,"
                + "link_to_layout_INSTANCE_3IRNS4jM");

    fields.put(fieldsDisplayField);

    String expectedContent =
        replaceLinksToLayoutsParameters(
            read("test-journal-content-link-to-page-field.xml"), layouts);

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }
  @Test
  public void testGetFieldsFromContentWithNestedElements() throws Exception {
    Fields expectedFields = getNestedFields(_ddmStructure.getStructureId());

    String content = read("test-journal-content-nested-fields.xml");

    Fields actualFields = JournalConverterUtil.getDDMFields(_ddmStructure, content);

    Assert.assertEquals(expectedFields, actualFields);
  }
  @Test
  public void testGetContentFromNestedFields() throws Exception {
    Fields fields = getNestedFields(_ddmStructure.getStructureId());

    String expectedContent = read("test-journal-content-nested-fields.xml");

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }
  @Test
  public void testGetFieldsFromContentWithDocumentLibraryElement() throws Exception {

    Fields expectedFields = new Fields();

    ServiceContext serviceContext =
        ServiceContextTestUtil.getServiceContext(group.getGroupId(), TestPropsValues.getUserId());

    FileEntry fileEntry =
        DLAppLocalServiceUtil.addFileEntry(
            TestPropsValues.getUserId(),
            group.getGroupId(),
            DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
            "Test 1.txt",
            ContentTypes.TEXT_PLAIN,
            RandomTestUtil.randomBytes(),
            serviceContext);

    Field documentLibraryField = getDocumentLibraryField(fileEntry, _ddmStructure.getStructureId());

    expectedFields.put(documentLibraryField);

    Field fieldsDisplayField =
        getFieldsDisplayField(_ddmStructure.getStructureId(), "document_library_INSTANCE_4aGOvP3N");

    expectedFields.put(fieldsDisplayField);

    String content = read("test-journal-content-doc-library-field.xml");

    XPath xPathSelector = SAXReaderUtil.createXPath("//dynamic-content");

    Document document = SAXReaderUtil.read(content);

    Element element = (Element) xPathSelector.selectSingleNode(document);

    String[] previewURLs = new String[2];

    previewURLs[0] =
        DLUtil.getPreviewURL(
            fileEntry, fileEntry.getFileVersion(), null, StringPool.BLANK, true, true);
    previewURLs[1] =
        DLUtil.getPreviewURL(
            fileEntry, fileEntry.getFileVersion(), null, StringPool.BLANK, false, false);

    for (int i = 0; i < previewURLs.length; i++) {
      element.addCDATA(previewURLs[i]);

      Fields actualFields = JournalConverterUtil.getDDMFields(_ddmStructure, document.asXML());

      Assert.assertEquals(expectedFields, actualFields);
    }
  }
  @Test
  public void testGetJournalXSD() throws Exception {
    String expectedXSD = read("test-journal-structure-all-fields.xml");

    Map<String, Map<String, String>> expectedMap = JournalTestUtil.getXsdMap(expectedXSD);

    String actualXSD =
        JournalConverterUtil.getJournalXSD(read("test-ddm-structure-all-fields.xml"));

    Map<String, Map<String, String>> actualMap = JournalTestUtil.getXsdMap(actualXSD);

    Assert.assertEquals(expectedMap, actualMap);
  }
  @Test
  public void testGetDDMXSD() throws Exception {
    String expectedXSD = read("test-ddm-structure-all-fields.xml");

    DDMForm expectedDDMForm = DDMFormXSDDeserializerUtil.deserialize(expectedXSD);

    String actualXSD =
        JournalConverterUtil.getDDMXSD(read("test-journal-structure-all-fields.xml"));

    validateDDMXSD(actualXSD);

    DDMForm actualDDMForm = DDMFormXSDDeserializerUtil.deserialize(actualXSD);

    assertEquals(expectedDDMForm, actualDDMForm);
  }
  @Test
  public void testGetFieldsFromContentWithListElement() throws Exception {
    Fields expectedFields = new Fields();

    Field listField = getListField(_ddmStructure.getStructureId());

    expectedFields.put(listField);

    Field fieldsDisplayField =
        getFieldsDisplayField(_ddmStructure.getStructureId(), "list_INSTANCE_pcm9WPVX");

    expectedFields.put(fieldsDisplayField);

    String content = read("test-journal-content-list-field.xml");

    Fields actualFields = JournalConverterUtil.getDDMFields(_ddmStructure, content);

    Assert.assertEquals(expectedFields, actualFields);
  }
  @Test
  public void testGetContentFromTextField() throws Exception {
    Fields fields = new Fields();

    Field textField = getTextField(_ddmStructure.getStructureId());

    fields.put(textField);

    Field fieldsDisplayField =
        getFieldsDisplayField(_ddmStructure.getStructureId(), "text_INSTANCE_bf4sdx6Q");

    fields.put(fieldsDisplayField);

    String expectedContent = read("test-journal-content-text-field.xml");

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }
  @Test
  public void testGetContentFromMultiListField() throws Exception {
    Fields fields = new Fields();

    Field multiListField = getMultiListField(_ddmStructure.getStructureId());

    fields.put(multiListField);

    Field fieldsDisplayField =
        getFieldsDisplayField(_ddmStructure.getStructureId(), "multi-list_INSTANCE_9X5wVsSv");

    fields.put(fieldsDisplayField);

    String expectedContent = read("test-journal-content-multi-list-field.xml");

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }
  @Test
  public void testGetFieldsFromContentWithBooleanElement() throws Exception {
    Fields expectedFields = new Fields();

    Field booleanField = getBooleanField(_ddmStructure.getStructureId());

    expectedFields.put(booleanField);

    Field fieldsDisplayField =
        getFieldsDisplayField(
            _ddmStructure.getStructureId(), "boolean_INSTANCE_Okhyj6Ni,boolean_INSTANCE_1SYNQuhg");

    expectedFields.put(fieldsDisplayField);

    String content = read("test-journal-content-boolean-repeatable-field.xml");

    Fields actualFields = JournalConverterUtil.getDDMFields(_ddmStructure, content);

    Assert.assertEquals(expectedFields, actualFields);
  }
  @Test
  public void testGetContentFromBooleanField() throws Exception {
    Fields fields = new Fields();

    Field booleanField = getBooleanField(_ddmStructure.getStructureId());

    fields.put(booleanField);

    Field fieldsDisplayField =
        getFieldsDisplayField(
            _ddmStructure.getStructureId(), "boolean_INSTANCE_Okhyj6Ni,boolean_INSTANCE_1SYNQuhg");

    fields.put(fieldsDisplayField);

    String expectedContent = read("test-journal-content-boolean-repeatable-field.xml");

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }
  @Test
  public void testGetContentFromTextBoxField() throws Exception {
    Fields fields = new Fields();

    Field textBoxField = getTextBoxField(_ddmStructure.getStructureId());

    fields.put(textBoxField);

    Field fieldsDisplayField =
        getFieldsDisplayField(
            _ddmStructure.getStructureId(),
            "text_box_INSTANCE_ND057krU,text_box_INSTANCE_HvemvQgl,"
                + "text_box_INSTANCE_enAnbvq6");

    fields.put(fieldsDisplayField);

    String expectedContent = read("test-journal-content-text-box-repeatable-field.xml");

    String actualContent = JournalConverterUtil.getContent(_ddmStructure, fields);

    assertEquals(expectedContent, actualContent);
  }