/**
* 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.validator.internal;
import com.liferay.dynamic.data.mapping.model.DDMFormLayout;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutColumn;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutPage;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutRow;
import com.liferay.dynamic.data.mapping.model.LocalizedValue;
import com.liferay.dynamic.data.mapping.validator.DDMFormLayoutValidationException.InvalidRowSize;
import com.liferay.dynamic.data.mapping.validator.DDMFormLayoutValidationException.MustNotDuplicateFieldName;
import com.liferay.dynamic.data.mapping.validator.DDMFormLayoutValidationException.MustSetDefaultLocale;
import com.liferay.dynamic.data.mapping.validator.DDMFormLayoutValidationException.MustSetEqualLocaleForLayoutAndTitle;
import com.liferay.dynamic.data.mapping.validator.DDMFormLayoutValidator;
import com.liferay.portal.kernel.util.LocaleUtil;
import java.util.Locale;
import org.junit.Test;
/**
* @author Pablo Carvalho
*/
public class DDMFormLayoutValidatorTest {
@Test(expected = MustNotDuplicateFieldName.class)
public void testDuplicateFieldNames() throws Exception {
DDMFormLayoutColumn ddmFormLayoutColumn1 = _createDDMFormLayoutColumn(
6, "field1", "field2", "field3");
DDMFormLayoutColumn ddmFormLayoutColumn2 = _createDDMFormLayoutColumn(
6, "field1", "field3");
DDMFormLayoutRow ddmFormLayoutRow = _createDDMFormLayoutRow(
ddmFormLayoutColumn1);
ddmFormLayoutRow.addDDMFormLayoutColumn(ddmFormLayoutColumn2);
LocalizedValue title = _createLocalizedValue("Page1", LocaleUtil.US);
DDMFormLayoutPage ddmFormLayoutPage = _createDDMFormLayoutPage(
ddmFormLayoutRow, title);
DDMFormLayout ddmFormLayout = _createDDMFormLayout(
ddmFormLayoutPage, LocaleUtil.US);
_ddmFormLayoutValidator.validate(ddmFormLayout);
}
@Test(expected = InvalidRowSize.class)
public void testInvalidRowSize() throws Exception {
DDMFormLayoutColumn ddmFormLayoutColumn1 = _createDDMFormLayoutColumn(
6, "field1");
DDMFormLayoutColumn ddmFormLayoutColumn2 = _createDDMFormLayoutColumn(
7, "field2");
DDMFormLayoutRow ddmFormLayoutRow = _createDDMFormLayoutRow(
ddmFormLayoutColumn1);
ddmFormLayoutRow.addDDMFormLayoutColumn(ddmFormLayoutColumn2);
LocalizedValue title = _createLocalizedValue("Page1", LocaleUtil.US);
DDMFormLayoutPage ddmFormLayoutPage = _createDDMFormLayoutPage(
ddmFormLayoutRow, title);
DDMFormLayout ddmFormLayout = _createDDMFormLayout(
ddmFormLayoutPage, LocaleUtil.US);
_ddmFormLayoutValidator.validate(ddmFormLayout);
}
@Test(expected = MustSetDefaultLocale.class)
public void testNullDefaultLocale() throws Exception {
DDMFormLayout ddmFormLayout = new DDMFormLayout();
ddmFormLayout.setDefaultLocale(null);
_ddmFormLayoutValidator.validate(ddmFormLayout);
}
@Test
public void testValidDDMFormLayout() throws Exception {
DDMFormLayoutColumn ddmFormLayoutColumn = _createDDMFormLayoutColumn(
12, "field");
DDMFormLayoutRow ddmFormLayoutRow = _createDDMFormLayoutRow(
ddmFormLayoutColumn);
LocalizedValue title = _createLocalizedValue("Page1", LocaleUtil.US);
DDMFormLayoutPage ddmFormLayoutPage = _createDDMFormLayoutPage(
ddmFormLayoutRow, title);
DDMFormLayout ddmFormLayout = _createDDMFormLayout(
ddmFormLayoutPage, LocaleUtil.US);
_ddmFormLayoutValidator.validate(ddmFormLayout);
}
@Test(expected = MustSetEqualLocaleForLayoutAndTitle.class)
public void testWrongDefaultLocaleSetForPageTitle() throws Exception {
DDMFormLayoutColumn ddmFormLayoutColumn = _createDDMFormLayoutColumn(
12, "field");
DDMFormLayoutRow ddmFormLayoutRow = _createDDMFormLayoutRow(
ddmFormLayoutColumn);
LocalizedValue title = _createLocalizedValue("Page1", LocaleUtil.US);
DDMFormLayoutPage ddmFormLayoutPage = _createDDMFormLayoutPage(
ddmFormLayoutRow, title);
DDMFormLayout ddmFormLayout = _createDDMFormLayout(
ddmFormLayoutPage, LocaleUtil.BRAZIL);
_ddmFormLayoutValidator.validate(ddmFormLayout);
}
private DDMFormLayout _createDDMFormLayout(
DDMFormLayoutPage ddmFormLayoutPage, Locale defaultLocale) {
DDMFormLayout ddmFormLayout = new DDMFormLayout();
ddmFormLayout.addDDMFormLayoutPage(ddmFormLayoutPage);
ddmFormLayout.setDefaultLocale(defaultLocale);
return ddmFormLayout;
}
private DDMFormLayoutColumn _createDDMFormLayoutColumn(
int size, String... fieldNames) {
DDMFormLayoutColumn ddmFormLayoutColumn = new DDMFormLayoutColumn(
size, fieldNames);
return ddmFormLayoutColumn;
}
private DDMFormLayoutPage _createDDMFormLayoutPage(
DDMFormLayoutRow ddmFormLayoutRow, LocalizedValue title) {
DDMFormLayoutPage ddmFormLayoutPage = new DDMFormLayoutPage();
ddmFormLayoutPage.addDDMFormLayoutRow(ddmFormLayoutRow);
ddmFormLayoutPage.setTitle(title);
return ddmFormLayoutPage;
}
private DDMFormLayoutRow _createDDMFormLayoutRow(
DDMFormLayoutColumn ddmFormLayoutColumn) {
DDMFormLayoutRow ddmFormLayoutRow = new DDMFormLayoutRow();
ddmFormLayoutRow.addDDMFormLayoutColumn(ddmFormLayoutColumn);
return ddmFormLayoutRow;
}
private LocalizedValue _createLocalizedValue(
String value, Locale defaultLocale) {
LocalizedValue localizedValue = new LocalizedValue(defaultLocale);
localizedValue.addString(defaultLocale, value);
return localizedValue;
}
private final DDMFormLayoutValidator _ddmFormLayoutValidator =
new DDMFormLayoutValidatorImpl();
}