com.liferay.dynamic.data.mapping.io.BaseDDMTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.dynamic.data.mapping.io.BaseDDMTestCase.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.dynamic.data.mapping.io;

import com.liferay.dynamic.data.mapping.model.DDMFormLayoutColumn;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutRow;
import com.liferay.portal.json.JSONFactoryImpl;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
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.PortalClassLoaderUtil;
import com.liferay.portal.kernel.util.ResourceBundleUtil;
import com.liferay.portal.kernel.util.SetUtil;
import com.liferay.portal.kernel.util.StringUtil;

import java.io.IOException;
import java.io.InputStream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Set;

import org.junit.Before;
import org.junit.runner.RunWith;

import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

/**
 * @author Marcellus Tavares
 */
@PrepareForTest({ LocaleUtil.class, PortalClassLoaderUtil.class, ResourceBundleUtil.class })
@RunWith(PowerMockRunner.class)
public class BaseDDMTestCase extends PowerMockito {

    @Before
    public void setUp() throws Exception {
        setUpJSONFactoryUtil();
        setUpLanguageUtil();
        setUpLocaleUtil();
        setUpPortalClassLoaderUtil();
        setUpResourceBundleUtil();
    }

    protected DDMFormLayoutColumn createDDMFormLayoutColumn(int size, String... fieldNames) {

        DDMFormLayoutColumn ddmFormLayoutColumn = new DDMFormLayoutColumn(size, fieldNames);

        return ddmFormLayoutColumn;
    }

    protected List<DDMFormLayoutColumn> createDDMFormLayoutColumns(String... fieldNames) {

        List<DDMFormLayoutColumn> ddmFormLayoutColumns = new ArrayList<>();

        int size = 12 / fieldNames.length;

        for (String fieldName : fieldNames) {
            ddmFormLayoutColumns.add(new DDMFormLayoutColumn(size, fieldName));
        }

        return ddmFormLayoutColumns;
    }

    protected DDMFormLayoutRow createDDMFormLayoutRow(DDMFormLayoutColumn... ddmFormLayoutColumns) {

        return createDDMFormLayoutRow(Arrays.asList(ddmFormLayoutColumns));
    }

    protected DDMFormLayoutRow createDDMFormLayoutRow(List<DDMFormLayoutColumn> ddmFormLayoutColumns) {

        DDMFormLayoutRow ddmFormLayoutRow = new DDMFormLayoutRow();

        ddmFormLayoutRow.setDDMFormLayoutColumns(ddmFormLayoutColumns);

        return ddmFormLayoutRow;
    }

    protected String read(String fileName) throws IOException {
        Class<?> clazz = getClass();

        InputStream inputStream = clazz.getResourceAsStream("dependencies/" + fileName);

        return StringUtil.read(inputStream);
    }

    protected void setUpJSONFactoryUtil() {
        JSONFactoryUtil jsonFactoryUtil = new JSONFactoryUtil();

        jsonFactoryUtil.setJSONFactory(new JSONFactoryImpl());
    }

    protected void setUpLanguageUtil() {
        Set<Locale> availableLocales = SetUtil.fromArray(new Locale[] { LocaleUtil.BRAZIL, LocaleUtil.US });

        whenLanguageGetAvailableLocalesThen(availableLocales);

        whenLanguageIsAvailableLocale("en_US");
        whenLanguageIsAvailableLocale("pt_BR");

        LanguageUtil languageUtil = new LanguageUtil();

        languageUtil.setLanguage(language);
    }

    protected void setUpLocaleUtil() {
        mockStatic(LocaleUtil.class);

        when(LocaleUtil.fromLanguageId("en_US")).thenReturn(LocaleUtil.US);

        when(LocaleUtil.fromLanguageId("pt_BR")).thenReturn(LocaleUtil.BRAZIL);

        when(LocaleUtil.getDefault()).thenReturn(LocaleUtil.US);

        when(LocaleUtil.toLanguageId(LocaleUtil.US)).thenReturn("en_US");

        when(LocaleUtil.toLanguageId(LocaleUtil.BRAZIL)).thenReturn("pt_BR");

        when(LocaleUtil.toLanguageIds((Locale[]) Matchers.any())).then(new Answer<String[]>() {

            @Override
            public String[] answer(InvocationOnMock invocationOnMock) throws Throwable {

                Object[] args = invocationOnMock.getArguments();

                Locale[] locales = (Locale[]) args[0];

                String[] languageIds = new String[locales.length];

                for (int i = 0; i < locales.length; i++) {
                    languageIds[i] = LocaleUtil.toLanguageId(locales[i]);
                }

                return languageIds;
            }

        });
    }

    protected void setUpPortalClassLoaderUtil() {
        mockStatic(PortalClassLoaderUtil.class);

        when(PortalClassLoaderUtil.getClassLoader()).thenReturn(_classLoader);
    }

    protected void setUpResourceBundleUtil() {
        mockStatic(ResourceBundleUtil.class);

        when(ResourceBundleUtil.getBundle("content.Language", LocaleUtil.BRAZIL, _classLoader))
                .thenReturn(_resourceBundle);

        when(ResourceBundleUtil.getBundle("content.Language", LocaleUtil.US, _classLoader))
                .thenReturn(_resourceBundle);
    }

    protected void whenLanguageGetAvailableLocalesThen(Set<Locale> availableLocales) {

        when(language.getAvailableLocales()).thenReturn(availableLocales);
    }

    protected void whenLanguageIsAvailableLocale(String languageId) {
        when(language.isAvailableLocale(Matchers.eq(languageId))).thenReturn(true);
    }

    @Mock
    protected Language language;

    @Mock
    private ClassLoader _classLoader;

    @Mock
    private ResourceBundle _resourceBundle;

}