/**
* 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;
}