/**
* 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.service.persistence;
import com.liferay.document.library.kernel.model.DLFileEntry;
import com.liferay.document.library.kernel.model.DLFileShortcut;
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.DLTrashServiceUtil;
import com.liferay.document.library.kernel.service.persistence.DLFolderFinderUtil;
import com.liferay.portal.kernel.dao.orm.QueryDefinition;
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.Folder;
import com.liferay.portal.kernel.service.RepositoryLocalServiceUtil;
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.rule.Sync;
import com.liferay.portal.kernel.test.rule.SynchronousDestinationTestRule;
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.ContentTypes;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.repository.portletrepository.PortletRepository;
import com.liferay.portal.test.randomizerbumpers.TikaSafeRandomizerBumper;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.portal.test.rule.TransactionalTestRule;
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 Zsolt Berentey
*/
@Sync
public class DLFolderFinderTest {
@ClassRule
@Rule
public static final AggregateTestRule aggregateTestRule =
new AggregateTestRule(
new LiferayIntegrationTestRule(),
SynchronousDestinationTestRule.INSTANCE,
TransactionalTestRule.INSTANCE);
@Before
public void setUp() throws Exception {
_group = GroupTestUtil.addGroup();
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), TestPropsValues.getUserId());
long classNameId = PortalUtil.getClassNameId(
PortletRepository.class.getName());
RepositoryLocalServiceUtil.addRepository(
TestPropsValues.getUserId(), _group.getGroupId(), classNameId,
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, "Test Repository",
StringUtil.randomString(), StringUtil.randomString(),
new UnicodeProperties(), false, serviceContext);
_folder = DLAppLocalServiceUtil.addFolder(
TestPropsValues.getUserId(), _group.getGroupId(),
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, "Folder A",
StringPool.BLANK, serviceContext);
DLAppLocalServiceUtil.addFolder(
TestPropsValues.getUserId(), _group.getGroupId(),
_folder.getFolderId(), "Folder B", StringPool.BLANK,
serviceContext);
Folder folder = DLAppLocalServiceUtil.addFolder(
TestPropsValues.getUserId(), _group.getGroupId(),
_folder.getFolderId(), "Folder C", StringPool.BLANK,
serviceContext);
DLTrashServiceUtil.moveFolderToTrash(folder.getFolderId());
FileEntry fileEntry = addFileEntry(
_group.getGroupId(), _folder.getFolderId(), "FE1.txt",
ContentTypes.TEXT_PLAIN);
_fileShortcut = DLAppLocalServiceUtil.addFileShortcut(
TestPropsValues.getUserId(), _group.getGroupId(),
fileEntry.getFolderId(), fileEntry.getFileEntryId(),
serviceContext);
addFileEntry(
_group.getGroupId(), _folder.getFolderId(), "FE2.html",
ContentTypes.TEXT_HTML);
fileEntry = addFileEntry(
_group.getGroupId(), _folder.getFolderId(), "FE3.txt",
ContentTypes.TEXT_PLAIN);
DLTrashServiceUtil.moveFileEntryToTrash(fileEntry.getFileEntryId());
}
@Test
public void testCountF_FE_FS_ByG_F_M_M() throws Exception {
QueryDefinition<?> queryDefinition = new QueryDefinition<>();
queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);
Assert.assertEquals(
6,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(), null, false,
queryDefinition));
Assert.assertEquals(
5,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, false,
queryDefinition));
Assert.assertEquals(
1,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
null, false, queryDefinition));
Assert.assertEquals(
2,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
null, true, queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_APPROVED);
Assert.assertEquals(
4,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(), null, false,
queryDefinition));
Assert.assertEquals(
2,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_HTML}, false, queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);
Assert.assertEquals(
2,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(), null, false,
queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);
Assert.assertEquals(
4,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(), null, false,
queryDefinition));
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, false,
queryDefinition));
}
@Test
public void testCountFE_ByG_F() throws Exception {
QueryDefinition<?> queryDefinition = new QueryDefinition<>();
queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);
Assert.assertEquals(
3,
DLFolderFinderUtil.countFE_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);
Assert.assertEquals(
1,
DLFolderFinderUtil.countFE_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);
Assert.assertEquals(
2,
DLFolderFinderUtil.countFE_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
}
@Test
public void testCountFE_FS_ByG_F() throws Exception {
QueryDefinition<?> queryDefinition = new QueryDefinition<>();
queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);
Assert.assertEquals(
4,
DLFolderFinderUtil.filterCountFE_FS_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_APPROVED);
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountFE_FS_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);
Assert.assertEquals(
1,
DLFolderFinderUtil.filterCountFE_FS_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountFE_FS_ByG_F(
_group.getGroupId(), _folder.getFolderId(), queryDefinition));
}
@Test
public void testCountFE_FS_ByG_F_M() throws Exception {
QueryDefinition<?> queryDefinition = new QueryDefinition<>();
queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);
Assert.assertEquals(
4,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(), null,
queryDefinition));
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_APPROVED);
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(), null,
queryDefinition));
Assert.assertEquals(
1,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_HTML}, queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);
Assert.assertEquals(
1,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(), null,
queryDefinition));
Assert.assertEquals(
1,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, queryDefinition));
queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);
Assert.assertEquals(
3,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(), null,
queryDefinition));
Assert.assertEquals(
2,
DLFolderFinderUtil.filterCountFE_FS_ByG_F_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, queryDefinition));
}
@Test
public void testFindF_FE_FS_ByG_F_M_M() throws Exception {
QueryDefinition<?> queryDefinition = new QueryDefinition<>();
queryDefinition.setStatus(WorkflowConstants.STATUS_APPROVED);
List<Object> results = DLFolderFinderUtil.filterFindF_FE_FS_ByG_F_M_M(
_group.getGroupId(), _folder.getFolderId(),
new String[] {ContentTypes.TEXT_PLAIN}, false, queryDefinition);
Assert.assertEquals(results.toString(), 3, results.size());
for (Object result : results) {
Assert.assertTrue(
String.valueOf(result.getClass()),
result instanceof DLFileEntry ||
result instanceof DLFileShortcut ||
result instanceof DLFolder);
if (result instanceof DLFileEntry) {
DLFileEntry dlFileEntry = (DLFileEntry)result;
Assert.assertEquals("FE1.txt", dlFileEntry.getTitle());
}
else if (result instanceof FileShortcut) {
FileShortcut fileShortcut = (FileShortcut)result;
Assert.assertEquals(
this._fileShortcut.getFileShortcutId(),
fileShortcut.getFileShortcutId());
}
else if (result instanceof DLFolder) {
DLFolder dlFolder = (DLFolder)result;
Assert.assertEquals("Folder B", dlFolder.getName());
}
}
results = DLFolderFinderUtil.filterFindF_FE_FS_ByG_F_M_M(
_group.getGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
null, true, queryDefinition);
Assert.assertEquals(results.toString(), 2, results.size());
boolean assertMountPointFolder = false;
boolean assertRegularFolder = false;
for (Object result : results) {
Assert.assertTrue(
String.valueOf(result.getClass()), result instanceof DLFolder);
DLFolder dlFolder = (DLFolder)result;
if (dlFolder.isMountPoint()) {
Assert.assertEquals("Test Repository", dlFolder.getName());
assertMountPointFolder = true;
}
else {
Assert.assertEquals("Folder A", dlFolder.getName());
assertRegularFolder = true;
}
}
Assert.assertTrue(assertMountPointFolder);
Assert.assertTrue(assertRegularFolder);
}
protected FileEntry addFileEntry(
long groupId, long folderId, String sourceFileName, String mimeType)
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
groupId, TestPropsValues.getUserId());
return DLAppLocalServiceUtil.addFileEntry(
TestPropsValues.getUserId(), groupId, folderId, sourceFileName,
mimeType,
RandomTestUtil.randomBytes(TikaSafeRandomizerBumper.INSTANCE),
serviceContext);
}
private FileShortcut _fileShortcut;
private Folder _folder;
@DeleteAfterTestRun
private Group _group;
}