com.liferay.item.selector.web.internal.ItemSelectorImplTest.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.item.selector.web.internal.ItemSelectorImplTest.java

Source

/**
 * 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.item.selector.web.internal;

import com.liferay.item.selector.ItemSelectorCriterion;
import com.liferay.item.selector.ItemSelectorRendering;
import com.liferay.item.selector.ItemSelectorReturnType;
import com.liferay.item.selector.ItemSelectorView;
import com.liferay.item.selector.ItemSelectorViewRenderer;
import com.liferay.item.selector.constants.ItemSelectorPortletKeys;
import com.liferay.item.selector.web.internal.util.ItemSelectorCriterionSerializerImpl;
import com.liferay.portal.json.JSONFactoryImpl;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.portlet.LiferayPortletURL;
import com.liferay.portal.kernel.portlet.RequestBackedPortletURLFactory;
import com.liferay.portal.kernel.test.ReflectionTestUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.HttpUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.model.impl.GroupImpl;
import com.liferay.portal.util.HttpImpl;
import com.liferay.portal.util.PortalImpl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import org.mockito.Mockito;

import org.powermock.api.mockito.PowerMockito;

/**
 * @author Ivn Zaera
 * @author Roberto Daz
 */
public class ItemSelectorImplTest extends PowerMockito {

    @Before
    public void setUp() {
        _flickrItemSelectorCriterion = new FlickrItemSelectorCriterion();

        List<ItemSelectorReturnType> desiredItemSelectorReturnTypes = new ArrayList<>();

        desiredItemSelectorReturnTypes.add(_testURLItemSelectorReturnType);

        _flickrItemSelectorCriterion.setDesiredItemSelectorReturnTypes(desiredItemSelectorReturnTypes);

        _itemSelectorImpl = new ItemSelectorImpl();

        _stubItemSelectorCriterionSerializer.addItemSelectorReturnType(_testFileEntryItemSelectorReturnType);
        _stubItemSelectorCriterionSerializer.addItemSelectorReturnType(_testStringItemSelectorReturnType);
        _stubItemSelectorCriterionSerializer.addItemSelectorReturnType(_testURLItemSelectorReturnType);

        _itemSelectorImpl.setItemSelectorCriterionSerializer(_stubItemSelectorCriterionSerializer);

        ReflectionTestUtil.setFieldValue(_itemSelectorImpl, "_http", new HttpImpl());
        ReflectionTestUtil.setFieldValue(_itemSelectorImpl, "_portal", new PortalImpl());

        _mediaItemSelectorCriterion = new MediaItemSelectorCriterion();

        _mediaItemSelectorCriterion.setFileExtension("jpg");
        _mediaItemSelectorCriterion.setMaxSize(2048);

        desiredItemSelectorReturnTypes = new ArrayList<>();

        desiredItemSelectorReturnTypes.add(new TestFileEntryItemSelectorReturnType());
        desiredItemSelectorReturnTypes.add(_testURLItemSelectorReturnType);

        _mediaItemSelectorCriterion.setDesiredItemSelectorReturnTypes(desiredItemSelectorReturnTypes);

        HttpUtil httpUtil = new HttpUtil();

        httpUtil.setHttp(new HttpImpl());

        JSONFactoryUtil jsonFactoryUtil = new JSONFactoryUtil();

        jsonFactoryUtil.setJSONFactory(new JSONFactoryImpl());

        PortalUtil portalUtil = new PortalUtil();

        portalUtil.setPortal(new PortalImpl());
    }

    @Test
    public void testGetItemSelectedEventName() {
        String itemSelectorURL = getItemSelectorURL("testItemSelectedEventName", _mediaItemSelectorCriterion,
                _flickrItemSelectorCriterion);

        setUpItemSelectionCriterionHandlers();

        Assert.assertEquals("testItemSelectedEventName",
                _itemSelectorImpl.getItemSelectedEventName(itemSelectorURL));
    }

    @Test
    public void testGetItemSelectorCriteriaFromItemSelectorURL() {
        String itemSelectorURL = getItemSelectorURL(StringUtil.randomString(), _mediaItemSelectorCriterion,
                _flickrItemSelectorCriterion);

        setUpItemSelectionCriterionHandlers();

        List<ItemSelectorCriterion> itemSelectorCriteria = _itemSelectorImpl
                .getItemSelectorCriteria(itemSelectorURL);

        Assert.assertEquals(itemSelectorCriteria.toString(), 2, itemSelectorCriteria.size());

        MediaItemSelectorCriterion mediaItemSelectorCriterion = (MediaItemSelectorCriterion) itemSelectorCriteria
                .get(0);

        Assert.assertEquals("jpg", mediaItemSelectorCriterion.getFileExtension());
        Assert.assertEquals(2048, mediaItemSelectorCriterion.getMaxSize());

        List<ItemSelectorReturnType> desiredItemSelectorReturnTypes = mediaItemSelectorCriterion
                .getDesiredItemSelectorReturnTypes();

        Assert.assertEquals(desiredItemSelectorReturnTypes.toString(), 2, desiredItemSelectorReturnTypes.size());
        Assert.assertTrue(desiredItemSelectorReturnTypes.get(0) instanceof TestFileEntryItemSelectorReturnType);
        Assert.assertTrue(desiredItemSelectorReturnTypes.get(1) instanceof TestURLItemSelectorReturnType);

        Assert.assertTrue(itemSelectorCriteria.get(1) instanceof FlickrItemSelectorCriterion);
    }

    @Test
    public void testGetItemSelectorParameters() {
        Map<String, String[]> parameters = _itemSelectorImpl.getItemSelectorParameters("itemSelectedEventName",
                _mediaItemSelectorCriterion, _flickrItemSelectorCriterion);

        Assert.assertEquals("itemSelectedEventName",
                parameters.get(ItemSelectorImpl.PARAMETER_ITEM_SELECTED_EVENT_NAME)[0]);
        Assert.assertEquals(
                MediaItemSelectorCriterion.class.getName() + "," + FlickrItemSelectorCriterion.class.getName(),
                parameters.get(ItemSelectorImpl.PARAMETER_CRITERIA)[0]);
        Assert.assertNull(parameters.get("0_desiredItemSelectorReturnTypes"));
        Assert.assertNotNull(parameters.get("0_json")[0]);
        Assert.assertNotNull(parameters.get("1_json")[0]);
        Assert.assertEquals(parameters.toString(), 4, parameters.size());
    }

    @Test
    public void testGetItemSelectorRendering() {
        setUpItemSelectionCriterionHandlers();

        ItemSelectorRendering itemSelectorRendering = getItemSelectorRendering();

        Assert.assertEquals("itemSelectedEventName", itemSelectorRendering.getItemSelectedEventName());

        List<ItemSelectorViewRenderer> itemSelectorViewRenderers = itemSelectorRendering
                .getItemSelectorViewRenderers();

        ItemSelectorViewRenderer mediaItemSelectorViewRenderer = itemSelectorViewRenderers.get(0);

        MediaItemSelectorCriterion mediaItemSelectorCriterion = (MediaItemSelectorCriterion) mediaItemSelectorViewRenderer
                .getItemSelectorCriterion();

        Assert.assertEquals(_mediaItemSelectorCriterion.getFileExtension(),
                mediaItemSelectorCriterion.getFileExtension());
        Assert.assertEquals(_mediaItemSelectorCriterion.getMaxSize(), mediaItemSelectorCriterion.getMaxSize());

        Assert.assertTrue((ItemSelectorView<?>) mediaItemSelectorViewRenderer
                .getItemSelectorView() instanceof MediaItemSelectorView);

        ItemSelectorViewRenderer flickrItemSelectorViewRenderer = itemSelectorViewRenderers.get(1);

        FlickrItemSelectorCriterion flickrItemSelectorCriterion = (FlickrItemSelectorCriterion) flickrItemSelectorViewRenderer
                .getItemSelectorCriterion();

        Assert.assertEquals(_flickrItemSelectorCriterion.getUser(), flickrItemSelectorCriterion.getUser());

        Assert.assertTrue((ItemSelectorView<?>) flickrItemSelectorViewRenderer
                .getItemSelectorView() instanceof FlickrItemSelectorView);
        Assert.assertEquals(itemSelectorViewRenderers.toString(), 2, itemSelectorViewRenderers.size());
    }

    protected ItemSelectorRendering getItemSelectorRendering() {
        RequestBackedPortletURLFactory requestBackedPortletURLFactory = mock(RequestBackedPortletURLFactory.class);

        LiferayPortletURL mockLiferayPortletURL = mock(LiferayPortletURL.class);

        when(requestBackedPortletURLFactory.createControlPanelRenderURL(Mockito.anyString(),
                Mockito.any(Group.class), Mockito.anyLong(), Mockito.anyLong())).thenReturn(mockLiferayPortletURL);

        Map<String, String[]> parameters = _itemSelectorImpl.getItemSelectorParameters("itemSelectedEventName",
                _mediaItemSelectorCriterion, _flickrItemSelectorCriterion);

        ThemeDisplay themeDisplay = mock(ThemeDisplay.class);

        themeDisplay.setScopeGroupId(12345);

        when(themeDisplay.getScopeGroup()).thenReturn(new GroupImpl());

        return _itemSelectorImpl.getItemSelectorRendering(requestBackedPortletURLFactory, parameters, themeDisplay);
    }

    protected String getItemSelectorURL(String itemSelectedEventName,
            ItemSelectorCriterion... itemSelectorCriteria) {

        Map<String, String[]> itemSelectorParameters = _itemSelectorImpl
                .getItemSelectorParameters(itemSelectedEventName, itemSelectorCriteria);

        String itemSelectorURL = "http://localhost?p_p_state=popup&p_p_mode=view";

        String namespace = PortalUtil.getPortletNamespace(ItemSelectorPortletKeys.ITEM_SELECTOR);

        for (Map.Entry<String, String[]> entry : itemSelectorParameters.entrySet()) {

            itemSelectorURL = HttpUtil.addParameter(itemSelectorURL, namespace + entry.getKey(),
                    entry.getValue()[0]);
        }

        return itemSelectorURL;
    }

    protected void setUpItemSelectionCriterionHandlers() {
        _itemSelectorImpl.setItemSelectionCriterionHandler(new FlickrItemSelectorCriterionHandler());
        _itemSelectorImpl.setItemSelectionCriterionHandler(new MediaItemSelectorCriterionHandler());
    }

    private FlickrItemSelectorCriterion _flickrItemSelectorCriterion;
    private ItemSelectorImpl _itemSelectorImpl;
    private MediaItemSelectorCriterion _mediaItemSelectorCriterion;
    private final StubItemSelectorCriterionSerializerImpl _stubItemSelectorCriterionSerializer = new StubItemSelectorCriterionSerializerImpl();
    private final ItemSelectorReturnType _testFileEntryItemSelectorReturnType = new TestFileEntryItemSelectorReturnType();
    private final ItemSelectorReturnType _testStringItemSelectorReturnType = new TestStringItemSelectorReturnType();
    private final ItemSelectorReturnType _testURLItemSelectorReturnType = new TestURLItemSelectorReturnType();

    private class StubItemSelectorCriterionSerializerImpl extends ItemSelectorCriterionSerializerImpl {

        @Override
        public void addItemSelectorReturnType(ItemSelectorReturnType itemSelectorReturnType) {

            super.addItemSelectorReturnType(itemSelectorReturnType);
        }

    }

}