/**
* 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.mapping.io.internal;
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.DDMFormRule;
import com.liferay.dynamic.data.mapping.model.DDMFormSuccessPageSettings;
import com.liferay.dynamic.data.mapping.model.LocalizedValue;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.StringBundler;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Pablo Carvalho
*/
public abstract class BaseDDMFormDeserializerTestCase extends BaseDDMTestCase {
@Test
public void testDDMFormAndFieldsDefaultLocales() throws Exception {
StringBundler sb = new StringBundler(4);
sb.append("ddm-form-");
sb.append(getDeserializerType());
sb.append("-deserializer-different-default-locale");
sb.append(getTestFileExtension());
String serializedDDMForm = read(sb.toString());
DDMForm ddmForm = deserialize(serializedDDMForm);
Assert.assertEquals(LocaleUtil.BRAZIL, ddmForm.getDefaultLocale());
Map<String, DDMFormField> ddmFormFieldsMap =
ddmForm.getDDMFormFieldsMap(true);
DDMFormField selectDDMFormField = ddmFormFieldsMap.get("Select5979");
LocalizedValue selectLabel = selectDDMFormField.getLabel();
Assert.assertEquals(LocaleUtil.BRAZIL, selectLabel.getDefaultLocale());
DDMFormFieldOptions ddmFormFieldOptions =
selectDDMFormField.getDDMFormFieldOptions();
for (String optionValue : ddmFormFieldOptions.getOptionsValues()) {
LocalizedValue optionLabel = ddmFormFieldOptions.getOptionLabels(
optionValue);
Assert.assertEquals(
LocaleUtil.BRAZIL, optionLabel.getDefaultLocale());
}
}
@Test
public void testDDMFormDeserialization() throws Exception {
StringBundler sb = new StringBundler(4);
sb.append("ddm-form-");
sb.append(getDeserializerType());
sb.append("-deserializer-test-data");
sb.append(getTestFileExtension());
String serializedDDMForm = read(sb.toString());
DDMForm ddmForm = deserialize(serializedDDMForm);
testAvailableLocales(ddmForm);
testDDMFormRules(ddmForm.getDDMFormRules());
testDefaultLocale(ddmForm);
Map<String, DDMFormField> ddmFormFieldsMap =
ddmForm.getDDMFormFieldsMap(true);
testBooleanDDMFormField(ddmFormFieldsMap.get("Boolean2282"));
testDateDDMFormField(ddmFormFieldsMap.get("Date2510"));
testDecimalDDMFormField(ddmFormFieldsMap.get("Decimal3479"));
testDocumentLibraryDDMFormField(
ddmFormFieldsMap.get("Documents_and_Media4036"));
testHTMLDDMFormField(ddmFormFieldsMap.get("HTML4512"));
testNestedDDMFormFields(ddmFormFieldsMap.get("Text6980"));
testRadioDDMFormField(ddmFormFieldsMap.get("Radio5699"));
testDDMFormSuccessPageSettings(ddmForm.getDDMFormSuccessPageSettings());
}
protected abstract DDMForm deserialize(String serializedDDMForm)
throws PortalException;
protected abstract String getDeserializerType();
protected abstract String getTestFileExtension();
protected void testAvailableLocales(DDMForm ddmForm) {
Set<Locale> availableLocales = ddmForm.getAvailableLocales();
Assert.assertEquals(
availableLocales.toString(), 2, availableLocales.size());
Assert.assertTrue(availableLocales.contains(LocaleUtil.US));
Assert.assertTrue(availableLocales.contains(LocaleUtil.BRAZIL));
}
protected void testBooleanDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("boolean", ddmFormField.getDataType());
Assert.assertEquals("keyword", ddmFormField.getIndexType());
LocalizedValue label = ddmFormField.getLabel();
Assert.assertEquals("Boolean", label.getString(LocaleUtil.US));
Assert.assertEquals("Booleano", label.getString(LocaleUtil.BRAZIL));
LocalizedValue predefinedValue = ddmFormField.getPredefinedValue();
Assert.assertEquals("false", predefinedValue.getString(LocaleUtil.US));
Assert.assertEquals("checkbox", ddmFormField.getType());
Assert.assertTrue(ddmFormField.isRepeatable());
Assert.assertFalse(ddmFormField.isRequired());
Assert.assertFalse(ddmFormField.isShowLabel());
}
protected void testDateDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("date", ddmFormField.getDataType());
Assert.assertEquals("ddm", ddmFormField.getFieldNamespace());
Assert.assertEquals("ddm-date", ddmFormField.getType());
Assert.assertTrue(ddmFormField.isShowLabel());
}
protected void testDDMFormRules(List<DDMFormRule> ddmFormRules) {
}
protected void testDDMFormSuccessPageSettings(
DDMFormSuccessPageSettings ddmFormSuccessPageSettings) {
Assert.assertNotNull(ddmFormSuccessPageSettings);
Assert.assertNull(ddmFormSuccessPageSettings.getBody());
Assert.assertNull(ddmFormSuccessPageSettings.getTitle());
Assert.assertFalse(ddmFormSuccessPageSettings.isEnabled());
}
protected void testDecimalDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("double", ddmFormField.getDataType());
Assert.assertEquals("ddm", ddmFormField.getFieldNamespace());
Assert.assertEquals("ddm-decimal", ddmFormField.getType());
}
protected void testDefaultLocale(DDMForm ddmForm) {
Locale defaultLocale = ddmForm.getDefaultLocale();
Assert.assertEquals(LocaleUtil.US, defaultLocale);
}
protected void testDocumentLibraryDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("document-library", ddmFormField.getDataType());
Assert.assertEquals("ddm", ddmFormField.getFieldNamespace());
Assert.assertEquals("ddm-documentlibrary", ddmFormField.getType());
Assert.assertTrue(ddmFormField.isShowLabel());
}
protected void testHTMLDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("html", ddmFormField.getDataType());
Assert.assertEquals("ddm", ddmFormField.getFieldNamespace());
Assert.assertEquals("ddm-text-html", ddmFormField.getType());
Assert.assertFalse(ddmFormField.isReadOnly());
Assert.assertFalse(ddmFormField.isRepeatable());
Assert.assertFalse(ddmFormField.isRequired());
Assert.assertTrue(ddmFormField.isShowLabel());
}
protected void testNestedDDMFormFields(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
List<DDMFormField> nestedDDMFormFields =
ddmFormField.getNestedDDMFormFields();
Assert.assertEquals(
nestedDDMFormFields.toString(), 1, nestedDDMFormFields.size());
DDMFormField separatorDDMFormField = nestedDDMFormFields.get(0);
Assert.assertEquals("Separator7211", separatorDDMFormField.getName());
nestedDDMFormFields = separatorDDMFormField.getNestedDDMFormFields();
Assert.assertEquals(
nestedDDMFormFields.toString(), 1, nestedDDMFormFields.size());
DDMFormField selectDDMFormField = nestedDDMFormFields.get(0);
Assert.assertEquals("Select7450", selectDDMFormField.getName());
DDMFormFieldOptions selectDDMFormFieldOptions =
selectDDMFormField.getDDMFormFieldOptions();
Set<String> optionValues = selectDDMFormFieldOptions.getOptionsValues();
Assert.assertEquals(optionValues.toString(), 3, optionValues.size());
}
protected void testRadioDDMFormField(DDMFormField ddmFormField) {
Assert.assertNotNull(ddmFormField);
Assert.assertEquals("string", ddmFormField.getDataType());
Assert.assertEquals("radio", ddmFormField.getType());
LocalizedValue predefinedValue = ddmFormField.getPredefinedValue();
Assert.assertEquals(
"[\"Value 1\"]", predefinedValue.getString(LocaleUtil.US));
DDMFormFieldOptions ddmFormFieldOptions =
ddmFormField.getDDMFormFieldOptions();
Set<String> optionsValues = ddmFormFieldOptions.getOptionsValues();
Assert.assertEquals(optionsValues.toString(), 3, optionsValues.size());
Assert.assertTrue(optionsValues.contains("Value 1"));
Assert.assertTrue(optionsValues.contains("Value 2"));
Assert.assertTrue(optionsValues.contains("Value 3"));
LocalizedValue value1Labels = ddmFormFieldOptions.getOptionLabels(
"Value 1");
Assert.assertEquals("Option 1", value1Labels.getString(LocaleUtil.US));
Assert.assertEquals(
"Opcao 1", value1Labels.getString(LocaleUtil.BRAZIL));
}
}