/**
* 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.portlet.documentlibrary.util;
import com.liferay.document.library.kernel.model.DLFileEntry;
import com.liferay.document.library.kernel.model.DLFileShortcut;
import com.liferay.document.library.kernel.model.DLFileVersion;
import com.liferay.document.library.kernel.model.DLFolder;
import com.liferay.document.library.kernel.model.DLFolderConstants;
import com.liferay.document.library.kernel.service.DLAppLocalServiceUtil;
import com.liferay.document.library.kernel.service.DLAppServiceUtil;
import com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil;
import com.liferay.document.library.kernel.service.DLFolderLocalServiceUtil;
import com.liferay.portal.kernel.dao.orm.QueryDefinition;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.FileShortcut;
import com.liferay.portal.kernel.repository.model.FileVersion;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.repository.model.RepositoryEntry;
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.workflow.WorkflowConstants;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.portlet.documentlibrary.util.test.DLTestUtil;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
/**
* @author Roberto Díaz
*/
public class RepositoryModelUtilTest {
@ClassRule
@Rule
public static final AggregateTestRule aggregateTestRule =
new LiferayIntegrationTestRule();
@Before
public void setUp() throws Exception {
_group = GroupTestUtil.addGroup();
_serviceContext = ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), TestPropsValues.getUserId());
_folder = DLAppServiceUtil.addFolder(
_group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
RandomTestUtil.randomString(), RandomTestUtil.randomString(),
_serviceContext);
}
@Test
public void testToFileEntries() throws Exception {
populateFolderWithDLFileEntries();
List<DLFileEntry> dlFileEntries =
DLFileEntryLocalServiceUtil.getFileEntries(
_group.getGroupId(), _folder.getFolderId());
List<FileEntry> fileEntries = RepositoryModelUtil.toFileEntries(
dlFileEntries);
Assert.assertEquals(
fileEntries.toString(), dlFileEntries.size(), fileEntries.size());
for (int i = 0; i < dlFileEntries.size(); i++) {
DLFileEntry dlFileEntry = dlFileEntries.get(i);
FileEntry fileEntry = fileEntries.get(i);
Assert.assertEquals(
dlFileEntry.getFileEntryId(), fileEntry.getFileEntryId());
}
}
@Test
public void testToFileShortcuts() throws Exception {
populateFolderWithDLFileShortcuts();
List<DLFileEntry> dlFileEntries =
DLFileEntryLocalServiceUtil.getFileEntries(
_group.getGroupId(), _folder.getFolderId());
DLFileEntry dlFileEntry = dlFileEntries.get(0);
List<DLFileShortcut> dlFileShortcuts = dlFileEntry.getFileShortcuts();
List<FileShortcut> fileShortcuts = RepositoryModelUtil.toFileShortcuts(
dlFileShortcuts);
Assert.assertEquals(
fileShortcuts.toString(), dlFileShortcuts.size(),
fileShortcuts.size());
for (int i = 0; i < dlFileShortcuts.size(); i++) {
DLFileShortcut dlFileShortcut = dlFileShortcuts.get(i);
FileShortcut fileShortcut = fileShortcuts.get(i);
Assert.assertEquals(
dlFileShortcut.getFileShortcutId(),
fileShortcut.getFileShortcutId());
}
}
@Test
public void testToFileVersions() throws Exception {
DLFileEntry dlFileEntry = DLTestUtil.addDLFileEntry(
_folder.getFolderId());
for (int i = 0; i < 5; i++) {
dlFileEntry.setTitle(RandomTestUtil.randomString());
DLFileEntryLocalServiceUtil.updateDLFileEntry(dlFileEntry);
}
dlFileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
dlFileEntry.getFileEntryId());
List<DLFileVersion> dlFileVersions = dlFileEntry.getFileVersions(
WorkflowConstants.STATUS_APPROVED);
List<FileVersion> fileVersions = RepositoryModelUtil.toFileVersions(
dlFileVersions);
Assert.assertEquals(
fileVersions.toString(), dlFileVersions.size(),
fileVersions.size());
for (int i = 0; i < dlFileVersions.size(); i++) {
DLFileVersion dlFileVersion = dlFileVersions.get(i);
FileVersion fileVersion = fileVersions.get(i);
Assert.assertEquals(
dlFileVersion.getFileVersionId(),
fileVersion.getFileVersionId());
}
}
@Test
public void testToFolders() throws Exception {
populateFolderWithDLFolders();
List<DLFolder> dlFolders = DLFolderLocalServiceUtil.getFolders(
_group.getGroupId(), _folder.getFolderId());
List<Folder> folders = RepositoryModelUtil.toFolders(dlFolders);
Assert.assertEquals(
folders.toString(), dlFolders.size(), folders.size());
for (int i = 0; i < dlFolders.size(); i++) {
DLFolder dlFolder = dlFolders.get(i);
Folder folder = folders.get(i);
Assert.assertEquals(dlFolder.getFolderId(), folder.getFolderId());
}
}
@Test
public void testToRepositoryEntries() throws Exception {
populateFolderWithDLFileEntries();
populateFolderWithDLFileShortcuts();
populateFolderWithDLFolders();
QueryDefinition<?> queryDefinition = new QueryDefinition<>(
WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
List<Object> dlFoldersAndDLFileEntriesAndDLFileShortcuts =
DLFolderLocalServiceUtil.getFoldersAndFileEntriesAndFileShortcuts(
_group.getGroupId(), _folder.getFolderId(), new String[0], true,
queryDefinition);
List<RepositoryEntry> repositoryEntries =
RepositoryModelUtil.toRepositoryEntries(
dlFoldersAndDLFileEntriesAndDLFileShortcuts);
Assert.assertEquals(
repositoryEntries.toString(),
dlFoldersAndDLFileEntriesAndDLFileShortcuts.size(),
repositoryEntries.size());
}
@Test(expected = IllegalArgumentException.class)
public void testToRepositoryEntriesWithIllegalArgument() throws Exception {
populateFolderWithDLFileEntries();
populateFolderWithDLFileShortcuts();
populateFolderWithDLFolders();
QueryDefinition<?> queryDefinition = new QueryDefinition<>(
WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
List<Object> dlFoldersAndDLFileEntriesAndDLFileShortcuts =
DLFolderLocalServiceUtil.getFoldersAndFileEntriesAndFileShortcuts(
_group.getGroupId(), _folder.getFolderId(), new String[0], true,
queryDefinition);
dlFoldersAndDLFileEntriesAndDLFileShortcuts.add(new Object());
RepositoryModelUtil.toRepositoryEntries(
dlFoldersAndDLFileEntriesAndDLFileShortcuts);
}
protected void populateFolderWithDLFileEntries() throws Exception {
for (int i = 0; i < 5; i++) {
DLTestUtil.addDLFileEntry(_folder.getFolderId());
}
}
protected void populateFolderWithDLFileShortcuts() throws Exception {
DLFileEntry dlFileEntry = DLTestUtil.addDLFileEntry(
_folder.getFolderId());
for (int i = 0; i < 5; i++) {
DLAppLocalServiceUtil.addFileShortcut(
TestPropsValues.getUserId(), _group.getGroupId(),
_folder.getFolderId(), dlFileEntry.getFileEntryId(),
_serviceContext);
}
}
protected void populateFolderWithDLFolders() throws Exception {
for (int i = 0; i < 5; i++) {
DLTestUtil.addDLFolder(
_group.getGroupId(), _folder.getFolderId(), true,
_serviceContext);
}
}
private Folder _folder;
@DeleteAfterTestRun
private Group _group;
private ServiceContext _serviceContext;
}