/** * 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.data.provider.internal; import static org.powermock.api.mockito.PowerMockito.mock; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.mockito.PowerMockito.when; import com.liferay.dynamic.data.mapping.data.provider.internal.rest.DDMRESTDataProviderSettings; 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.util.DDMFormFactory; import com.liferay.portal.kernel.language.Language; import com.liferay.portal.kernel.language.LanguageUtil; import com.liferay.portal.kernel.util.ResourceBundleUtil; import java.util.Locale; import java.util.Map; import java.util.Set; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Matchers; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; /** * @author Leonardo Barros */ @PrepareForTest(ResourceBundleUtil.class) @RunWith(PowerMockRunner.class) public class DDMRESTDataProviderSettingsTest { @Before public void setUp() throws Exception { setUpLanguageUtil(); setUpResourceBundleUtil(); } @Test public void testCreateForm() { DDMForm ddmForm = DDMFormFactory.create( DDMRESTDataProviderSettings.class); Map<String, DDMFormField> ddmFormFields = ddmForm.getDDMFormFieldsMap( false); Assert.assertEquals(ddmFormFields.toString(), 11, ddmFormFields.size()); assertCacheable(ddmFormFields.get("cacheable")); assertFilterable(ddmFormFields.get("filterable")); assertFilterParameterName(ddmFormFields.get("filterParameterName")); assertInputParameters(ddmFormFields.get("inputParameters")); assertOutputParameters(ddmFormFields.get("outputParameters")); assertPagination(ddmFormFields.get("pagination")); assertPaginationEndParameterName( ddmFormFields.get("paginationEndParameterName")); assertPassword(ddmFormFields.get("password")); assertStartPaginationParameterName( ddmFormFields.get("paginationStartParameterName")); assertURL(ddmFormFields.get("url")); assertUsername(ddmFormFields.get("username")); } protected void assertCacheable(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("boolean", ddmFormField.getDataType()); Assert.assertEquals("true", ddmFormField.getProperty("showAsSwitcher")); Assert.assertEquals("checkbox", ddmFormField.getType()); } protected void assertFilterable(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("boolean", ddmFormField.getDataType()); Assert.assertEquals("true", ddmFormField.getProperty("showAsSwitcher")); Assert.assertEquals("checkbox", ddmFormField.getType()); } protected void assertFilterParameterName(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("string", ddmFormField.getDataType()); Map<String, Object> properties = ddmFormField.getProperties(); Assert.assertTrue(properties.containsKey("placeholder")); Assert.assertTrue(properties.containsKey("tooltip")); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertInputParameters(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("", ddmFormField.getDataType()); Assert.assertEquals("fieldset", ddmFormField.getType()); Map<String, DDMFormField> nestedDDMFormFieldsMap = ddmFormField.getNestedDDMFormFieldsMap(); Assert.assertEquals( nestedDDMFormFieldsMap.toString(), 4, nestedDDMFormFieldsMap.size()); // Label DDMFormField inputParameterLabelDDMFormField = nestedDDMFormFieldsMap.get("inputParameterLabel"); Assert.assertNotNull(inputParameterLabelDDMFormField); Assert.assertEquals("text", inputParameterLabelDDMFormField.getType()); Assert.assertEquals( "string", inputParameterLabelDDMFormField.getDataType()); Map<String, Object> inputParameterLabelDDMFormFieldProperties = inputParameterLabelDDMFormField.getProperties(); Assert.assertTrue( inputParameterLabelDDMFormFieldProperties.containsKey( "placeholder")); // Name DDMFormField inputParameterNameDDMFormField = nestedDDMFormFieldsMap.get("inputParameterName"); Assert.assertNotNull(inputParameterNameDDMFormField); Assert.assertEquals("text", inputParameterNameDDMFormField.getType()); Assert.assertEquals( "string", inputParameterNameDDMFormField.getDataType()); Map<String, Object> inputParameterNameDDMFormFieldProperties = inputParameterNameDDMFormField.getProperties(); Assert.assertTrue( inputParameterNameDDMFormFieldProperties.containsKey( "placeholder")); // Type DDMFormField inputParameterTypeDDMFormField = nestedDDMFormFieldsMap.get("inputParameterType"); Assert.assertNotNull(inputParameterTypeDDMFormField); Assert.assertEquals("select", inputParameterTypeDDMFormField.getType()); Assert.assertEquals( "string", inputParameterTypeDDMFormField.getDataType()); Assert.assertNotNull( inputParameterTypeDDMFormField.getDDMFormFieldOptions()); DDMFormFieldOptions ddmFormFieldOptions = inputParameterTypeDDMFormField.getDDMFormFieldOptions(); Set<String> optionValues = ddmFormFieldOptions.getOptionsValues(); Assert.assertTrue(optionValues.contains("text")); Assert.assertTrue(optionValues.contains("number")); // Required DDMFormField inputParameterRequiredDDMFormField = nestedDDMFormFieldsMap.get("inputParameterRequired"); Assert.assertNotNull(inputParameterRequiredDDMFormField); Assert.assertEquals( "checkbox", inputParameterRequiredDDMFormField.getType()); Assert.assertEquals( "boolean", inputParameterRequiredDDMFormField.getDataType()); } protected void assertOutputParameters(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("", ddmFormField.getDataType()); Assert.assertEquals("fieldset", ddmFormField.getType()); Map<String, DDMFormField> nestedDDMFormFieldsMap = ddmFormField.getNestedDDMFormFieldsMap(); Assert.assertEquals( nestedDDMFormFieldsMap.toString(), 3, nestedDDMFormFieldsMap.size()); // Name DDMFormField outputParameterNameDDMFormField = nestedDDMFormFieldsMap.get("outputParameterName"); Assert.assertNotNull(outputParameterNameDDMFormField); Assert.assertEquals("text", outputParameterNameDDMFormField.getType()); Assert.assertEquals( "string", outputParameterNameDDMFormField.getDataType()); Map<String, Object> outputParameterNameDDMFormFieldProperties = outputParameterNameDDMFormField.getProperties(); Assert.assertTrue( outputParameterNameDDMFormFieldProperties.containsKey( "placeholder")); // Path DDMFormField outputParameterPathDDMFormField = nestedDDMFormFieldsMap.get("outputParameterPath"); Assert.assertNotNull(outputParameterPathDDMFormField); Assert.assertEquals("text", outputParameterPathDDMFormField.getType()); Assert.assertEquals( "string", outputParameterPathDDMFormField.getDataType()); Map<String, Object> outputParameterPathDDMFormFieldProperties = outputParameterPathDDMFormField.getProperties(); Assert.assertTrue( outputParameterPathDDMFormFieldProperties.containsKey( "placeholder")); // Type DDMFormField outputParameterTypeDDMFormField = nestedDDMFormFieldsMap.get("outputParameterType"); Assert.assertNotNull(outputParameterTypeDDMFormField); Assert.assertEquals( "select", outputParameterTypeDDMFormField.getType()); Assert.assertEquals( "string", outputParameterTypeDDMFormField.getDataType()); Assert.assertNotNull( outputParameterTypeDDMFormField.getDDMFormFieldOptions()); DDMFormFieldOptions ddmFormFieldOptions = outputParameterTypeDDMFormField.getDDMFormFieldOptions(); Set<String> optionValues = ddmFormFieldOptions.getOptionsValues(); Assert.assertTrue(optionValues.contains("text")); Assert.assertTrue(optionValues.contains("number")); } protected void assertPagination(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("boolean", ddmFormField.getDataType()); Assert.assertEquals("true", ddmFormField.getProperty("showAsSwitcher")); Assert.assertEquals("checkbox", ddmFormField.getType()); } protected void assertPaginationEndParameterName(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("string", ddmFormField.getDataType()); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertPassword(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("string", ddmFormField.getDataType()); Map<String, Object> properties = ddmFormField.getProperties(); Assert.assertTrue(properties.containsKey("placeholder")); Assert.assertTrue(properties.containsKey("tooltip")); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertStartPaginationParameterName( DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("string", ddmFormField.getDataType()); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertURL(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertTrue(ddmFormField.isRequired()); Assert.assertEquals("string", ddmFormField.getDataType()); Map<String, Object> properties = ddmFormField.getProperties(); Assert.assertTrue(properties.containsKey("placeholder")); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertUsername(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertEquals("string", ddmFormField.getDataType()); Map<String, Object> properties = ddmFormField.getProperties(); Assert.assertTrue(properties.containsKey("placeholder")); Assert.assertTrue(properties.containsKey("tooltip")); Assert.assertEquals("text", ddmFormField.getType()); } protected void assertValue(DDMFormField ddmFormField) { Assert.assertNotNull(ddmFormField); Assert.assertTrue(ddmFormField.isRequired()); Assert.assertEquals("string", ddmFormField.getDataType()); Map<String, Object> properties = ddmFormField.getProperties(); Assert.assertTrue(properties.containsKey("placeholder")); Assert.assertTrue(properties.containsKey("tooltip")); Assert.assertEquals("text", ddmFormField.getType()); } 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 ); } }