com.liferay.document.library.service.test.DLFileEntryMetadataLocalServiceTest.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.document.library.service.test.DLFileEntryMetadataLocalServiceTest.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.document.library.service.test;

import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
import com.liferay.document.library.kernel.model.DLFileEntry;
import com.liferay.document.library.kernel.model.DLFileEntryMetadata;
import com.liferay.document.library.kernel.model.DLFileEntryType;
import com.liferay.document.library.kernel.model.DLFileVersion;
import com.liferay.document.library.kernel.model.DLFolderConstants;
import com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil;
import com.liferay.document.library.kernel.service.DLFileEntryMetadataLocalServiceUtil;
import com.liferay.document.library.kernel.service.DLFileEntryTypeLocalServiceUtil;
import com.liferay.dynamic.data.mapping.io.DDMFormXSDDeserializer;
import com.liferay.dynamic.data.mapping.kernel.DDMForm;
import com.liferay.dynamic.data.mapping.kernel.DDMFormField;
import com.liferay.dynamic.data.mapping.kernel.DDMFormFieldValue;
import com.liferay.dynamic.data.mapping.kernel.DDMFormValues;
import com.liferay.dynamic.data.mapping.kernel.UnlocalizedValue;
import com.liferay.dynamic.data.mapping.model.DDMStructure;
import com.liferay.dynamic.data.mapping.service.DDMStructureLocalServiceUtil;
import com.liferay.dynamic.data.mapping.test.util.DDMFormTestUtil;
import com.liferay.dynamic.data.mapping.util.DDMBeanTranslatorUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.test.rule.AggregateTestRule;
import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
import com.liferay.portal.kernel.test.util.GroupTestUtil;
import com.liferay.portal.kernel.test.util.RandomTestUtil;
import com.liferay.portal.kernel.test.util.ServiceContextTestUtil;
import com.liferay.portal.kernel.test.util.TestPropsValues;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.test.randomizerbumpers.TikaSafeRandomizerBumper;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.registry.Registry;
import com.liferay.registry.RegistryUtil;

import java.io.ByteArrayInputStream;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * @author Michael C. Han
 */
@RunWith(Arquillian.class)
public class DLFileEntryMetadataLocalServiceTest {

    @ClassRule
    @Rule
    public static final AggregateTestRule aggregateTestRule = new LiferayIntegrationTestRule();

    @Before
    public void setUp() throws Exception {
        setUpDDMFormXSDDeserializer();

        _group = GroupTestUtil.addGroup();

        ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group,
                TestPropsValues.getUserId());

        byte[] testFileBytes = FileUtil.getBytes(getClass(), "dependencies/ddmstructure.xml");

        com.liferay.dynamic.data.mapping.model.DDMForm ddmForm = _ddmFormXSDDeserializer
                .deserialize(new String(testFileBytes));

        serviceContext.setAttribute("ddmForm", DDMBeanTranslatorUtil.translate(ddmForm));

        User user = TestPropsValues.getUser();

        serviceContext.setLanguageId(LocaleUtil.toLanguageId(user.getLocale()));

        _dlFileEntryType = DLFileEntryTypeLocalServiceUtil.addFileEntryType(TestPropsValues.getUserId(),
                _group.getGroupId(), RandomTestUtil.randomString(), StringPool.BLANK, new long[0], serviceContext);

        List<com.liferay.dynamic.data.mapping.kernel.DDMStructure> ddmStructures = _dlFileEntryType
                .getDDMStructures();

        _ddmStructure = DDMStructureLocalServiceUtil.getStructure(ddmStructures.get(0).getStructureId());

        Map<String, DDMFormValues> ddmFormValuesMap = setUpDDMFormValuesMap(_ddmStructure.getStructureKey(),
                user.getLocale());

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
                RandomTestUtil.randomBytes(TikaSafeRandomizerBumper.INSTANCE));

        _dlFileEntry = DLFileEntryLocalServiceUtil.addFileEntry(TestPropsValues.getUserId(), _group.getGroupId(),
                _group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString(),
                null, RandomTestUtil.randomString(), null, null, _dlFileEntryType.getFileEntryTypeId(),
                ddmFormValuesMap, null, byteArrayInputStream, byteArrayInputStream.available(), serviceContext);
    }

    @Test
    public void testGetMismatchedCompanyIdFileEntryMetadatas() throws Exception {

        try {
            DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();

            DLFileEntryMetadata dlFileEntryMetadata = DLFileEntryMetadataLocalServiceUtil
                    .fetchFileEntryMetadata(_ddmStructure.getStructureId(), dlFileVersion.getFileVersionId());

            _ddmStructure.setCompanyId(12345);

            DDMStructureLocalServiceUtil.updateDDMStructure(_ddmStructure);

            List<DLFileEntryMetadata> dlFileEntryMetadatas = DLFileEntryMetadataLocalServiceUtil
                    .getMismatchedCompanyIdFileEntryMetadatas();

            Assert.assertEquals(dlFileEntryMetadatas.toString(), 1, dlFileEntryMetadatas.size());
            Assert.assertEquals(dlFileEntryMetadata, dlFileEntryMetadatas.get(0));
        } finally {
            if (_ddmStructure != null) {
                _ddmStructure.setCompanyId(_dlFileEntry.getCompanyId());

                DDMStructureLocalServiceUtil.updateDDMStructure(_ddmStructure);
            }
        }
    }

    @Test
    public void testGetNoStructuresFileEntryMetadatas() throws Exception {
        try {
            DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();

            DLFileEntryMetadata dlFileEntryMetadata = DLFileEntryMetadataLocalServiceUtil
                    .fetchFileEntryMetadata(_ddmStructure.getStructureId(), dlFileVersion.getFileVersionId());

            DDMStructureLocalServiceUtil.deleteDDMStructure(_ddmStructure);

            List<DLFileEntryMetadata> dlFileEntryMetadatas = DLFileEntryMetadataLocalServiceUtil
                    .getNoStructuresFileEntryMetadatas();

            Assert.assertEquals(dlFileEntryMetadatas.toString(), 1, dlFileEntryMetadatas.size());
            Assert.assertEquals(dlFileEntryMetadata, dlFileEntryMetadatas.get(0));
        } finally {
            if (_ddmStructure != null) {
                DDMStructureLocalServiceUtil.addDDMStructure(_ddmStructure);
            }
        }
    }

    protected Map<String, DDMFormValues> setUpDDMFormValuesMap(String ddmStructureKey, Locale currentLocale) {

        Set<Locale> availableLocales = DDMFormTestUtil.createAvailableLocales(currentLocale);

        DDMForm ddmForm = new DDMForm();

        ddmForm.setAvailableLocales(availableLocales);
        ddmForm.setDefaultLocale(currentLocale);

        DDMFormField ddmFormField = new DDMFormField("date_an", "ddm-date");

        ddmFormField.setDataType("date");

        ddmForm.addDDMFormField(ddmFormField);

        DDMFormValues ddmFormValues = new DDMFormValues(ddmForm);

        ddmFormValues.setAvailableLocales(availableLocales);
        ddmFormValues.setDefaultLocale(currentLocale);

        DDMFormFieldValue ddmFormFieldValue = new DDMFormFieldValue();

        ddmFormFieldValue.setName("date_an");
        ddmFormFieldValue.setValue(new UnlocalizedValue(""));

        ddmFormValues.addDDMFormFieldValue(ddmFormFieldValue);

        Map<String, DDMFormValues> ddmFormValuesMap = new HashMap<>();

        ddmFormValuesMap.put(ddmStructureKey, ddmFormValues);

        return ddmFormValuesMap;
    }

    protected void setUpDDMFormXSDDeserializer() {
        Registry registry = RegistryUtil.getRegistry();

        _ddmFormXSDDeserializer = registry.getService(DDMFormXSDDeserializer.class);
    }

    private DDMFormXSDDeserializer _ddmFormXSDDeserializer;
    private DDMStructure _ddmStructure;
    private DLFileEntry _dlFileEntry;
    private DLFileEntryType _dlFileEntryType;

    @DeleteAfterTestRun
    private Group _group;

}