/**
* 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.portal.kernel.settings;
import javax.portlet.PortletPreferences;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
/**
* @author Iván Zaera
*/
public class PortletPreferencesSettingsTest {
@Before
public void setUp() {
_portletPreferences = PowerMockito.mock(PortletPreferences.class);
Mockito.when(
_portletPreferences.getValue(
Matchers.eq(_PORTLET_PREFERENCES_SINGLE_KEY),
Matchers.anyString())
).thenReturn(
_PORTLET_PREFERENCES_SINGLE_VALUE
);
Mockito.when(
_portletPreferences.getValues(
Matchers.eq(_PORTLET_PREFERENCES_MULTIPLE_KEY),
(String[])Matchers.any())
).thenReturn(
_PORTLET_PREFERENCES_MULTIPLE_VALUES
);
ModifiableSettings modifiableSettings = new MemorySettings();
modifiableSettings.setValue(
_DEFAULT_SETTINGS_SINGLE_KEY, _DEFAULT_SETTINGS_SINGLE_VALUE);
modifiableSettings.setValues(
_DEFAULT_SETTINGS_MULTIPLE_KEY, _DEFAULT_SETTINGS_MULTIPLE_VALUES);
_portletPreferencesSettings = new PortletPreferencesSettings(
_portletPreferences, modifiableSettings);
}
@Test
public void testGetValuesWithExistingDefaultSettingsKey() {
Assert.assertArrayEquals(
_DEFAULT_SETTINGS_MULTIPLE_VALUES,
_portletPreferencesSettings.getValues(
_DEFAULT_SETTINGS_MULTIPLE_KEY, null));
}
@Test
public void testGetValuesWithExistingPortletPreferencesKey() {
Assert.assertArrayEquals(
_PORTLET_PREFERENCES_MULTIPLE_VALUES,
_portletPreferencesSettings.getValues(
_PORTLET_PREFERENCES_MULTIPLE_KEY, null));
}
@Test
public void testGetValuesWithMissingKey() {
String[] defaultValue = {"a", "b"};
Assert.assertArrayEquals(
defaultValue,
_portletPreferencesSettings.getValues("missingKeys", defaultValue));
}
@Test
public void testGetValueWithExistingDefaultSettingsKey() {
Assert.assertEquals(
_DEFAULT_SETTINGS_SINGLE_VALUE,
_portletPreferencesSettings.getValue(
_DEFAULT_SETTINGS_SINGLE_KEY, null));
}
@Test
public void testGetValueWithExistingPortletPreferencesKey() {
Assert.assertEquals(
_PORTLET_PREFERENCES_SINGLE_VALUE,
_portletPreferencesSettings.getValue(
_PORTLET_PREFERENCES_SINGLE_KEY, null));
}
@Test
public void testGetValueWithMissingKey() {
Assert.assertEquals(
"default",
_portletPreferencesSettings.getValue("missingKey", "default"));
}
@Test
public void testSetValueSetsPropertyInPortletPreferences()
throws Exception {
_portletPreferencesSettings.setValue("key", "value");
Mockito.verify(_portletPreferences);
_portletPreferences.setValue("key", "value");
}
@Test
public void testSetValuesSetsPropertyInPortletPreferences()
throws Exception {
String[] values = {"a", "b"};
_portletPreferencesSettings.setValues("key", values);
Mockito.verify(_portletPreferences);
_portletPreferences.setValues("key", values);
}
@Test
public void testStoreIsPerformedOnPortletPreferences() throws Exception {
_portletPreferencesSettings.store();
Mockito.verify(_portletPreferences);
_portletPreferences.store();
}
private static final String _DEFAULT_SETTINGS_MULTIPLE_KEY = "defaultKeys";
private static final String[] _DEFAULT_SETTINGS_MULTIPLE_VALUES =
{"defaultValue0", "defaultValue1"};
private static final String _DEFAULT_SETTINGS_SINGLE_KEY = "defaultKey";
private static final String _DEFAULT_SETTINGS_SINGLE_VALUE = "defaultValue";
private static final String _PORTLET_PREFERENCES_MULTIPLE_KEY =
"portletKeys";
private static final String[] _PORTLET_PREFERENCES_MULTIPLE_VALUES =
{"portletValue0", "portletValue1"};
private static final String _PORTLET_PREFERENCES_SINGLE_KEY = "portletKey";
private static final String _PORTLET_PREFERENCES_SINGLE_VALUE =
"portletValue";
private PortletPreferences _portletPreferences;
private PortletPreferencesSettings _portletPreferencesSettings;
}