/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.dynamic.data.lists.exporter.test; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.document.library.kernel.model.DLFolderConstants; import com.liferay.document.library.kernel.service.DLAppLocalServiceUtil; import com.liferay.dynamic.data.lists.exporter.DDLExporter; import com.liferay.dynamic.data.lists.exporter.DDLExporterFactory; import com.liferay.dynamic.data.lists.helper.DDLRecordSetTestHelper; import com.liferay.dynamic.data.lists.helper.DDLRecordTestHelper; import com.liferay.dynamic.data.lists.model.DDLRecord; import com.liferay.dynamic.data.lists.model.DDLRecordSet; import com.liferay.dynamic.data.lists.model.DDLRecordVersion; import com.liferay.dynamic.data.mapping.model.DDMForm; import com.liferay.dynamic.data.mapping.model.DDMFormField; import com.liferay.dynamic.data.mapping.model.DDMFormFieldOptions; import com.liferay.dynamic.data.mapping.model.DDMStructure; import com.liferay.dynamic.data.mapping.model.LocalizedValue; import com.liferay.dynamic.data.mapping.model.UnlocalizedValue; import com.liferay.dynamic.data.mapping.model.Value; import com.liferay.dynamic.data.mapping.storage.DDMFormValues; import com.liferay.dynamic.data.mapping.test.util.DDMFormTestUtil; import com.liferay.dynamic.data.mapping.test.util.DDMFormValuesTestUtil; import com.liferay.dynamic.data.mapping.test.util.DDMStructureTestHelper; import com.liferay.portal.kernel.json.JSONArray; import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.liferay.portal.kernel.json.JSONObject; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Layout; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portal.kernel.security.permission.PermissionThreadLocal; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.test.rule.AggregateTestRule; import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun; import com.liferay.portal.kernel.test.rule.Sync; import com.liferay.portal.kernel.test.rule.SynchronousDestinationTestRule; import com.liferay.portal.kernel.test.util.GroupTestUtil; import com.liferay.portal.kernel.test.util.RandomTestUtil; import com.liferay.portal.kernel.test.util.ServiceContextTestUtil; import com.liferay.portal.kernel.test.util.TestPropsValues; import com.liferay.portal.kernel.util.CharPool; import com.liferay.portal.kernel.util.ContentTypes; import com.liferay.portal.kernel.util.LocaleUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portal.kernel.xml.Document; import com.liferay.portal.kernel.xml.Element; import com.liferay.portal.kernel.xml.SAXReaderUtil; import com.liferay.portal.security.permission.SimplePermissionChecker; import com.liferay.portal.test.randomizerbumpers.TikaSafeRandomizerBumper; import com.liferay.portal.test.rule.LiferayIntegrationTestRule; import com.liferay.portal.util.test.LayoutTestUtil; import com.liferay.registry.Registry; import com.liferay.registry.RegistryUtil; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStreamReader; import java.io.Serializable; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.Set; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; /** * @author Renato Rego */ @RunWith(Arquillian.class) @Sync public class DDLExporterTest { @ClassRule @Rule public static final AggregateTestRule aggregateTestRule = new AggregateTestRule( new LiferayIntegrationTestRule(), SynchronousDestinationTestRule.INSTANCE); @Before public void setUp() throws Exception { _availableLocales = DDMFormTestUtil.createAvailableLocales(Locale.US); _defaultLocale = Locale.US; _group = GroupTestUtil.addGroup(); _originalPermissionChecker = PermissionThreadLocal.getPermissionChecker(); setUpDDLExporterFactory(); setUpDDMFormFieldDataTypes(); setUpDDMFormFieldValues(); setUpPermissionChecker(); } @After public void tearDown() throws Exception { PermissionThreadLocal.setPermissionChecker(_originalPermissionChecker); } @Test public void testCSVExport() throws Exception { DDMForm ddmForm = DDMFormTestUtil.createDDMForm( _availableLocales, _defaultLocale); createDDMFormFields(ddmForm); DDMFormValues ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); createDDMFormFieldValues(ddmFormValues); DDLRecordSetTestHelper recordSetTestHelper = new DDLRecordSetTestHelper( _group); DDLRecordSet recordSet = recordSetTestHelper.addRecordSet(ddmForm); DDLRecordTestHelper recordTestHelper = new DDLRecordTestHelper( _group, recordSet); DDLRecord record = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion = record.getRecordVersion(); DDLExporter ddlExporter = _ddlExporterFactory.getDDLExporter("csv"); byte[] bytes = ddlExporter.export(recordSet.getRecordSetId()); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(byteArrayInputStream))) { String header = bufferedReader.readLine(); Assert.assertEquals( "Field0,Field1,Field2,Field3,Field4,Field5,Field6,Field7," + "Field8,Field9,Field10,Field11,Field12,Status," + "Modified Date,Author", header); StringBundler sb = new StringBundler(31); sb.append("No"); sb.append(CharPool.COMMA); sb.append("1/1/70"); sb.append(CharPool.COMMA); sb.append("1"); sb.append(CharPool.COMMA); sb.append("file.txt"); sb.append(CharPool.COMMA); sb.append("\"Latitude: -8.035, Longitude: -34.918\""); sb.append(CharPool.COMMA); sb.append("2"); sb.append(CharPool.COMMA); sb.append("Link to Page content"); sb.append(CharPool.COMMA); sb.append("3"); sb.append(CharPool.COMMA); sb.append("Option 1"); sb.append(CharPool.COMMA); sb.append("Option 1"); sb.append(CharPool.COMMA); sb.append("Text content"); sb.append(CharPool.COMMA); sb.append("Text Area content"); sb.append(CharPool.COMMA); sb.append("Text HTML content"); sb.append(CharPool.COMMA); sb.append("Approved"); sb.append(CharPool.COMMA); sb.append(formatDate(recordVersion.getStatusDate())); sb.append(CharPool.COMMA); sb.append(recordVersion.getUserName()); String data = bufferedReader.readLine(); Assert.assertEquals(sb.toString(), data); } } @Test public void testExportRecordsWithDistinctFields() throws Exception { DDMForm ddmForm = DDMFormTestUtil.createDDMForm( _availableLocales, _defaultLocale); ddmForm.addDDMFormField( DDMFormTestUtil.createTextDDMFormField( "field0", false, false, false)); DDMFormValues ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); ddmFormValues.addDDMFormFieldValue( DDMFormValuesTestUtil.createDDMFormFieldValue( "field0", new UnlocalizedValue("text0"))); DDLRecordSetTestHelper recordSetTestHelper = new DDLRecordSetTestHelper( _group); DDLRecordSet recordSet = recordSetTestHelper.addRecordSet(ddmForm); DDLRecordTestHelper recordTestHelper = new DDLRecordTestHelper( _group, recordSet); DDLRecord record0 = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion0 = record0.getRecordVersion(); ddmForm.getDDMFormFields().clear(); ddmForm.addDDMFormField( DDMFormTestUtil.createTextDDMFormField( "field1", false, false, false)); ddmForm.addDDMFormField( DDMFormTestUtil.createTextDDMFormField( "field2", false, false, false)); ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); ddmFormValues.addDDMFormFieldValue( DDMFormValuesTestUtil.createDDMFormFieldValue( "field1", new UnlocalizedValue("text1"))); ddmFormValues.addDDMFormFieldValue( DDMFormValuesTestUtil.createDDMFormFieldValue( "field2", new UnlocalizedValue("text2"))); DDMStructure ddmStructure = recordSet.getDDMStructure(); DDMStructureTestHelper ddmStructureTestHelper = new DDMStructureTestHelper( PortalUtil.getClassNameId(DDLRecordSet.class), _group); ddmStructure = ddmStructureTestHelper.updateStructure( ddmStructure.getStructureId(), ddmForm); recordSet = recordSetTestHelper.updateRecordSet( recordSet.getRecordSetId(), ddmStructure); recordTestHelper = new DDLRecordTestHelper(_group, recordSet); DDLRecord record1 = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion1 = record1.getRecordVersion(); DDLExporter ddlExporter = _ddlExporterFactory.getDDLExporter("csv"); byte[] bytes = ddlExporter.export(recordSet.getRecordSetId()); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(byteArrayInputStream))) { String header = bufferedReader.readLine(); Assert.assertEquals( "field0,field1,field2,Status,Modified Date,Author", header); String row2 = bufferedReader.readLine(); StringBundler sb = new StringBundler(10); sb.append(CharPool.COMMA); sb.append("text1"); sb.append(CharPool.COMMA); sb.append("text2"); sb.append(CharPool.COMMA); sb.append("Approved"); sb.append(CharPool.COMMA); sb.append(formatDate(recordVersion1.getStatusDate())); sb.append(CharPool.COMMA); sb.append(recordVersion1.getUserName()); Assert.assertEquals(sb.toString(), row2); String row1 = bufferedReader.readLine(); sb = new StringBundler(9); sb.append("text0"); sb.append(CharPool.COMMA); sb.append(CharPool.COMMA); sb.append(CharPool.COMMA); sb.append("Approved"); sb.append(CharPool.COMMA); sb.append(formatDate(recordVersion0.getStatusDate())); sb.append(CharPool.COMMA); sb.append(recordVersion0.getUserName()); Assert.assertEquals(sb.toString(), row1); } } @Test public void testExportWithSpecialCharacters() throws Exception { DDMForm ddmForm = DDMFormTestUtil.createDDMForm( _availableLocales, _defaultLocale); ddmForm.addDDMFormField( DDMFormTestUtil.createTextDDMFormField( "field0", false, false, false)); DDMFormValues ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); ddmFormValues.addDDMFormFieldValue( DDMFormValuesTestUtil.createDDMFormFieldValue( "field0", new UnlocalizedValue("I'm \"good\""))); DDLRecordSetTestHelper recordSetTestHelper = new DDLRecordSetTestHelper( _group); DDLRecordSet recordSet = recordSetTestHelper.addRecordSet(ddmForm); DDLRecordTestHelper recordTestHelper = new DDLRecordTestHelper( _group, recordSet); DDLRecord record0 = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion0 = record0.getRecordVersion(); DDLExporter ddlExporter = _ddlExporterFactory.getDDLExporter("csv"); byte[] bytes = ddlExporter.export(recordSet.getRecordSetId()); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(byteArrayInputStream))) { String header = bufferedReader.readLine(); Assert.assertEquals("field0,Status,Modified Date,Author", header); String row0 = bufferedReader.readLine(); StringBundler sb = new StringBundler(10); sb.append("\"I'm \"\"good\"\"\""); sb.append(CharPool.COMMA); sb.append("Approved"); sb.append(CharPool.COMMA); sb.append(formatDate(recordVersion0.getStatusDate())); sb.append(CharPool.COMMA); sb.append(recordVersion0.getUserName()); Assert.assertEquals(sb.toString(), row0); } } @Test public void testXLSExport() throws Exception { DDMForm ddmForm = DDMFormTestUtil.createDDMForm( _availableLocales, _defaultLocale); createDDMFormFields(ddmForm); DDMFormValues ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); createDDMFormFieldValues(ddmFormValues); DDLRecordSetTestHelper recordSetTestHelper = new DDLRecordSetTestHelper( _group); DDLRecordSet recordSet = recordSetTestHelper.addRecordSet(ddmForm); DDLRecordTestHelper recordTestHelper = new DDLRecordTestHelper( _group, recordSet); DDLRecord record = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion = record.getRecordVersion(); DDLExporter ddlExporter = _ddlExporterFactory.getDDLExporter("xls"); byte[] bytes = ddlExporter.export(recordSet.getRecordSetId()); try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); HSSFWorkbook workbook = new HSSFWorkbook(byteArrayInputStream)) { Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = null; for (int i = 0; i < 13; i++) { cell = row.getCell(i); Assert.assertEquals("Field" + i, cell.getStringCellValue()); } row = sheet.getRow(1); cell = row.getCell(0); Assert.assertEquals("No", cell.getStringCellValue()); cell = row.getCell(1); Assert.assertEquals("1/1/70", cell.getStringCellValue()); cell = row.getCell(2); Assert.assertEquals("1", cell.getStringCellValue()); cell = row.getCell(3); Assert.assertEquals("file.txt", cell.getStringCellValue()); cell = row.getCell(4); Assert.assertEquals( "Latitude: -8.035, Longitude: -34.918", cell.getStringCellValue()); cell = row.getCell(5); Assert.assertEquals("2", cell.getStringCellValue()); cell = row.getCell(6); Assert.assertEquals( "Link to Page content", cell.getStringCellValue()); cell = row.getCell(7); Assert.assertEquals("3", cell.getStringCellValue()); cell = row.getCell(8); Assert.assertEquals("Option 1", cell.getStringCellValue()); cell = row.getCell(9); Assert.assertEquals("Option 1", cell.getStringCellValue()); cell = row.getCell(10); Assert.assertEquals("Text content", cell.getStringCellValue()); cell = row.getCell(11); Assert.assertEquals("Text Area content", cell.getStringCellValue()); cell = row.getCell(12); Assert.assertEquals("Text HTML content", cell.getStringCellValue()); cell = row.getCell(13); Assert.assertEquals("Approved", cell.getStringCellValue()); cell = row.getCell(14); Assert.assertEquals( formatDate(recordVersion.getStatusDate()), cell.getStringCellValue()); cell = row.getCell(15); Assert.assertEquals( recordVersion.getUserName(), cell.getStringCellValue()); } } @Test public void testXMLExport() throws Exception { DDMForm ddmForm = DDMFormTestUtil.createDDMForm( _availableLocales, _defaultLocale); createDDMFormFields(ddmForm); DDMFormValues ddmFormValues = DDMFormValuesTestUtil.createDDMFormValues( ddmForm, _availableLocales, _defaultLocale); createDDMFormFieldValues(ddmFormValues); DDLRecordSetTestHelper recordSetTestHelper = new DDLRecordSetTestHelper( _group); DDLRecordSet recordSet = recordSetTestHelper.addRecordSet(ddmForm); DDLRecordTestHelper recordTestHelper = new DDLRecordTestHelper( _group, recordSet); DDLRecord record = recordTestHelper.addRecord( ddmFormValues, WorkflowConstants.ACTION_PUBLISH); DDLRecordVersion recordVersion = record.getRecordVersion(); DDLExporter ddlExporter = _ddlExporterFactory.getDDLExporter("xml"); byte[] bytes = ddlExporter.export(recordSet.getRecordSetId()); Document document = SAXReaderUtil.createDocument(); Element rootElement = document.addElement("root"); Element fieldsElement = rootElement.addElement("fields"); addFieldElement(fieldsElement, "Field0", "No"); addFieldElement(fieldsElement, "Field1", "1/1/70"); addFieldElement(fieldsElement, "Field2", "1"); addFieldElement(fieldsElement, "Field3", "file.txt"); addFieldElement( fieldsElement, "Field4", "Latitude: -8.035, Longitude: -34.918"); addFieldElement(fieldsElement, "Field5", "2"); addFieldElement(fieldsElement, "Field6", "Link to Page content"); addFieldElement(fieldsElement, "Field7", "3"); addFieldElement(fieldsElement, "Field8", "Option 1"); addFieldElement(fieldsElement, "Field9", "Option 1"); addFieldElement(fieldsElement, "Field10", "Text content"); addFieldElement(fieldsElement, "Field11", "Text Area content"); addFieldElement(fieldsElement, "Field12", "Text HTML content"); addFieldElement(fieldsElement, "Status", "Approved"); addFieldElement( fieldsElement, "Modified Date", formatDate(recordVersion.getStatusDate())); addFieldElement(fieldsElement, "Author", recordVersion.getUserName()); String xml = document.asXML(); Assert.assertEquals(new String(bytes), xml); } protected void addFieldElement( Element fieldsElement, String label, Serializable value) { Element fieldElement = fieldsElement.addElement("field"); Element labelElement = fieldElement.addElement("label"); labelElement.addText(label); Element valueElement = fieldElement.addElement("value"); valueElement.addText(String.valueOf(value)); } protected DDMFormField createDDMFormField( String name, String type, String dataType) { DDMFormField ddmFormField = DDMFormTestUtil.createDDMFormField( name, name, type, dataType, true, false, false); if (type.equals("radio") || type.equals("select")) { setDDMFormFieldOptions(ddmFormField, 3); } return ddmFormField; } protected void createDDMFormFields(DDMForm ddmForm) { for (DDMFormFieldType ddmFormFieldType : DDMFormFieldType.values()) { String fieldName = "Field" + ddmFormFieldType.ordinal(); ddmForm.addDDMFormField( createDDMFormField( fieldName, ddmFormFieldType.getValue(), _ddmFormFieldDataTypes.get(ddmFormFieldType))); } } protected Value createDDMFormFieldValue(String valueString) { Value value = new LocalizedValue(_defaultLocale); value.addString(_defaultLocale, valueString); return value; } protected void createDDMFormFieldValues(DDMFormValues ddmFormValues) { for (DDMFormFieldType type : DDMFormFieldType.values()) { String fieldName = "Field" + type.ordinal(); Value fieldValue = createDDMFormFieldValue(_fieldValues.get(type)); ddmFormValues.addDDMFormFieldValue( DDMFormValuesTestUtil.createDDMFormFieldValue( fieldName, fieldValue)); } } protected String createDocumentLibraryDDMFormFieldValue() throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext( _group.getGroupId(), TestPropsValues.getUserId()); FileEntry fileEntry = DLAppLocalServiceUtil.addFileEntry( TestPropsValues.getUserId(), _group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, "file.txt", ContentTypes.TEXT_PLAIN, RandomTestUtil.randomBytes(TikaSafeRandomizerBumper.INSTANCE), serviceContext); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("groupId", fileEntry.getGroupId()); jsonObject.put("name", fileEntry.getTitle()); jsonObject.put("tempFile", "false"); jsonObject.put("title", fileEntry.getTitle()); jsonObject.put("uuid", fileEntry.getUuid()); return jsonObject.toString(); } protected String createGeolocationDDMFormFieldValue() throws Exception { JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("latitude", "-8.035"); jsonObject.put("longitude", "-34.918"); return jsonObject.toString(); } protected String createLinkToPageDDMFormFieldValue() throws Exception { Layout layout = LayoutTestUtil.addLayout( _group.getGroupId(), "Link to Page content", false); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("groupId", layout.getGroupId()); jsonObject.put("layoutId", layout.getLayoutId()); jsonObject.put("privateLayout", layout.getPrivateLayout()); return jsonObject.toString(); } protected String createListDDMFormFieldValue() throws Exception { JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); jsonArray.put("Value 1"); return jsonArray.toString(); } protected String formatDate(Date date) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT); dateTimeFormatter = dateTimeFormatter.withLocale(_defaultLocale); LocalDateTime localDateTime = LocalDateTime.ofInstant( date.toInstant(), ZoneId.systemDefault()); return dateTimeFormatter.format(localDateTime); } protected void setDDMFormFieldOptions( DDMFormField ddmFormField, int availableOptions) { DDMFormFieldOptions ddmFormFieldOptions = new DDMFormFieldOptions(); for (int i = 1; i <= availableOptions; i++) { ddmFormFieldOptions.addOptionLabel( "Value " + i, LocaleUtil.US, "Option " + i); } ddmFormField.setDDMFormFieldOptions(ddmFormFieldOptions); } protected void setUpDDLExporterFactory() { Registry registry = RegistryUtil.getRegistry(); _ddlExporterFactory = registry.getService(DDLExporterFactory.class); } protected Map<DDMFormFieldType, String> setUpDDMFormFieldDataTypes() { _ddmFormFieldDataTypes = new HashMap<>(); _ddmFormFieldDataTypes.put(DDMFormFieldType.CHECKBOX, "boolean"); _ddmFormFieldDataTypes.put(DDMFormFieldType.DATE, "date"); _ddmFormFieldDataTypes.put(DDMFormFieldType.DECIMAL, "double"); _ddmFormFieldDataTypes.put( DDMFormFieldType.DOCUMENT_LIBRARY, "document-library"); _ddmFormFieldDataTypes.put(DDMFormFieldType.GEOLOCATION, "geolocation"); _ddmFormFieldDataTypes.put(DDMFormFieldType.INTEGER, "integer"); _ddmFormFieldDataTypes.put( DDMFormFieldType.LINK_TO_PAGE, "link-to-page"); _ddmFormFieldDataTypes.put(DDMFormFieldType.NUMBER, "number"); _ddmFormFieldDataTypes.put(DDMFormFieldType.RADIO, "string"); _ddmFormFieldDataTypes.put(DDMFormFieldType.SELECT, "string"); _ddmFormFieldDataTypes.put(DDMFormFieldType.TEXT, "string"); _ddmFormFieldDataTypes.put(DDMFormFieldType.TEXT_AREA, "string"); _ddmFormFieldDataTypes.put(DDMFormFieldType.TEXT_HTML, "html"); return _ddmFormFieldDataTypes; } protected Map<DDMFormFieldType, String> setUpDDMFormFieldValues() throws Exception { _fieldValues = new HashMap<>(); _fieldValues.put(DDMFormFieldType.CHECKBOX, "false"); _fieldValues.put(DDMFormFieldType.DATE, "1970-01-01"); _fieldValues.put(DDMFormFieldType.DECIMAL, "1.0"); _fieldValues.put( DDMFormFieldType.DOCUMENT_LIBRARY, createDocumentLibraryDDMFormFieldValue()); _fieldValues.put( DDMFormFieldType.GEOLOCATION, createGeolocationDDMFormFieldValue()); _fieldValues.put(DDMFormFieldType.INTEGER, "2"); _fieldValues.put( DDMFormFieldType.LINK_TO_PAGE, createLinkToPageDDMFormFieldValue()); _fieldValues.put(DDMFormFieldType.NUMBER, "3"); _fieldValues.put(DDMFormFieldType.RADIO, createListDDMFormFieldValue()); _fieldValues.put( DDMFormFieldType.SELECT, createListDDMFormFieldValue()); _fieldValues.put(DDMFormFieldType.TEXT, "Text content"); _fieldValues.put(DDMFormFieldType.TEXT_AREA, "Text Area content"); _fieldValues.put(DDMFormFieldType.TEXT_HTML, "Text HTML content"); return _fieldValues; } protected void setUpPermissionChecker() throws Exception { PermissionThreadLocal.setPermissionChecker( new SimplePermissionChecker() { { init(TestPropsValues.getUser()); } @Override public boolean hasOwnerPermission( long companyId, String name, String primKey, long ownerId, String actionId) { return true; } }); } private Set<Locale> _availableLocales; private DDLExporterFactory _ddlExporterFactory; private Map<DDMFormFieldType, String> _ddmFormFieldDataTypes; private Locale _defaultLocale; private Map<DDMFormFieldType, String> _fieldValues; @DeleteAfterTestRun private Group _group; private PermissionChecker _originalPermissionChecker; private enum DDMFormFieldType { CHECKBOX("checkbox"), DATE("ddm-date"), DECIMAL("ddm-decimal"), DOCUMENT_LIBRARY("ddm-documentlibrary"), GEOLOCATION("ddm-geolocation"), INTEGER("ddm-integer"), LINK_TO_PAGE("ddm-link-to-page"), NUMBER("ddm-number"), RADIO("radio"), SELECT("select"), TEXT("text"), TEXT_AREA("textarea"), TEXT_HTML("ddm-text-html"); public String getValue() { return _value; } private DDMFormFieldType(String value) { _value = value; } private final String _value; } }