/**
* 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.form.web.internal.portlet.action;
import com.liferay.dynamic.data.lists.model.DDLRecordSet;
import com.liferay.dynamic.data.lists.model.DDLRecordSetSettings;
import com.liferay.dynamic.data.mapping.form.values.factory.DDMFormValuesFactory;
import com.liferay.dynamic.data.mapping.model.DDMForm;
import com.liferay.dynamic.data.mapping.model.DDMFormField;
import com.liferay.dynamic.data.mapping.model.LocalizedValue;
import com.liferay.dynamic.data.mapping.model.Value;
import com.liferay.dynamic.data.mapping.storage.DDMFormFieldValue;
import com.liferay.dynamic.data.mapping.storage.DDMFormValues;
import com.liferay.dynamic.data.mapping.util.DDMFormFactory;
import com.liferay.portal.kernel.language.Language;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.ResourceBundleUtil;
import com.liferay.portal.kernel.util.StringUtil;
import java.util.List;
import java.util.Locale;
import javax.portlet.ActionRequest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
/**
* @author Marcellus Tavares
*/
@PrepareForTest(ResourceBundleUtil.class)
@RunWith(PowerMockRunner.class)
public class CopyRecordSetMVCActionCommandTest extends PowerMockito {
@Before
public void setUp() throws Exception {
setUpCopyRecordSetMVCActionCommand();
setUpLanguageUtil();
setUpResourceBundleUtil();
}
@Test
public void testCreateRecordSetSettingsDDMFormValues() throws Exception {
DDMForm expectedRecordSetSettingsDDMForm = DDMFormFactory.create(
DDLRecordSetSettings.class);
DDLRecordSet recordSet = mock(DDLRecordSet.class);
DDMFormValues ddmFormValues = createDDMFormValues(
expectedRecordSetSettingsDDMForm);
when(recordSet.getSettingsDDMFormValues()).thenReturn(ddmFormValues);
String expectedStorageType = StringUtil.randomString();
mockSaveRecordSetMVCCommandHelperGetStorageType(expectedStorageType);
_copyRecordSetMVCActionCommand.saveRecordSetMVCCommandHelper =
_saveRecordSetMVCCommandHelper;
when(
_ddmFormValuesFactory.create(
Matchers.any(ActionRequest.class), Matchers.any(DDMForm.class))
).thenReturn(
ddmFormValues
);
DDMFormValues recordSetSettingsDDMFormValues =
_copyRecordSetMVCActionCommand.createRecordSetSettingsDDMFormValues(
_actionRequest, recordSet);
Assert.assertEquals(
expectedRecordSetSettingsDDMForm,
recordSetSettingsDDMFormValues.getDDMForm());
List<DDMFormFieldValue> recordSetSettingsDDMFormFieldValues =
recordSetSettingsDDMFormValues.getDDMFormFieldValues();
System.out.println(
getDDMFormFieldsSize(expectedRecordSetSettingsDDMForm));
Assert.assertEquals(
recordSetSettingsDDMFormFieldValues.toString(),
getDDMFormFieldsSize(expectedRecordSetSettingsDDMForm),
recordSetSettingsDDMFormFieldValues.size());
DDMFormFieldValue storageTypeDDMFormFieldValue =
_copyRecordSetMVCActionCommand.getStorageTypeDDMFormFieldValue(
recordSetSettingsDDMFormValues);
Assert.assertNotNull(storageTypeDDMFormFieldValue);
Value storageTypeDDMFormFieldValueValue =
storageTypeDDMFormFieldValue.getValue();
Assert.assertEquals(
expectedStorageType,
storageTypeDDMFormFieldValueValue.getString(LocaleUtil.US));
}
protected DDMFormFieldValue createDDMFormFieldValue(
String instanceId, String name, Value value) {
DDMFormFieldValue ddmFormFieldValue = new DDMFormFieldValue();
ddmFormFieldValue.setInstanceId(instanceId);
ddmFormFieldValue.setName(name);
ddmFormFieldValue.setValue(value);
return ddmFormFieldValue;
}
protected DDMFormFieldValue createDDMFormFieldValue(
String name, Value value) {
return createDDMFormFieldValue(StringUtil.randomString(), name, value);
}
protected DDMFormValues createDDMFormValues(DDMForm ddmForm) {
DDMFormValues ddmFormValues = new DDMFormValues(ddmForm);
ddmFormValues.setAvailableLocales(ddmForm.getAvailableLocales());
ddmFormValues.setDefaultLocale(ddmForm.getDefaultLocale());
List<DDMFormField> ddmFormFields = ddmForm.getDDMFormFields();
for (DDMFormField ddmFormField : ddmFormFields) {
DDMFormFieldValue ddmFormFieldValue =
createLocalizedDDMFormFieldValue(
ddmFormField.getName(), "test");
ddmFormValues.addDDMFormFieldValue(ddmFormFieldValue);
}
return ddmFormValues;
}
protected DDMFormFieldValue createLocalizedDDMFormFieldValue(
String name, String enValue) {
Value localizedValue = new LocalizedValue(LocaleUtil.US);
localizedValue.addString(LocaleUtil.US, enValue);
return createDDMFormFieldValue(name, localizedValue);
}
protected int getDDMFormFieldsSize(DDMForm ddmForm) {
List<DDMFormField> ddmFormFields = ddmForm.getDDMFormFields();
return ddmFormFields.size();
}
protected void mockSaveRecordSetMVCCommandHelperGetStorageType(
String returnStorageType)
throws Exception {
when(
_saveRecordSetMVCCommandHelper.getStorageType(
Matchers.any(DDMFormValues.class))
).thenReturn(
returnStorageType
);
}
protected void setUpCopyRecordSetMVCActionCommand() throws Exception {
_copyRecordSetMVCActionCommand = new CopyRecordSetMVCActionCommand();
field(
CopyRecordSetMVCActionCommand.class, "ddmFormValuesFactory"
).set(
_copyRecordSetMVCActionCommand, _ddmFormValuesFactory
);
}
protected void setUpLanguageUtil() {
LanguageUtil languageUtil = new LanguageUtil();
Language language = mock(Language.class);
languageUtil.setLanguage(language);
}
protected void setUpResourceBundleUtil() {
mockStatic(ResourceBundleUtil.class);
when(
ResourceBundleUtil.getBundle(
Matchers.anyString(), Matchers.any(Locale.class),
Matchers.any(ClassLoader.class))
).thenReturn(
ResourceBundleUtil.EMPTY_RESOURCE_BUNDLE
);
}
@Mock
private ActionRequest _actionRequest;
private CopyRecordSetMVCActionCommand _copyRecordSetMVCActionCommand;
@Mock
private DDMFormValuesFactory _ddmFormValuesFactory;
@Mock
private SaveRecordSetMVCCommandHelper _saveRecordSetMVCCommandHelper;
}