/** * 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.knowledge.base.service.test; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.knowledge.base.constants.KBArticleConstants; import com.liferay.knowledge.base.constants.KBFolderConstants; import com.liferay.knowledge.base.exception.KBFolderParentException; import com.liferay.knowledge.base.exception.NoSuchFolderException; import com.liferay.knowledge.base.model.KBArticle; import com.liferay.knowledge.base.model.KBFolder; import com.liferay.knowledge.base.service.KBArticleLocalServiceUtil; import com.liferay.knowledge.base.service.KBFolderLocalServiceUtil; import com.liferay.knowledge.base.util.comparator.KBObjectsModifiedDateComparator; import com.liferay.knowledge.base.util.comparator.KBObjectsPriorityComparator; import com.liferay.knowledge.base.util.comparator.KBObjectsTitleComparator; import com.liferay.knowledge.base.util.comparator.KBObjectsViewCountComparator; import com.liferay.portal.kernel.dao.orm.QueryUtil; 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.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.PortalUtil; import com.liferay.portal.kernel.util.Time; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portal.test.rule.LiferayIntegrationTestRule; import java.util.Date; import java.util.List; 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 Roberto Díaz */ @RunWith(Arquillian.class) @Sync public class KBFolderLocalServiceTest { @ClassRule @Rule public static final AggregateTestRule aggregateTestRule = new AggregateTestRule( new LiferayIntegrationTestRule(), SynchronousDestinationTestRule.INSTANCE); @Before public void setUp() throws Exception { _group = GroupTestUtil.addGroup(); _user = TestPropsValues.getUser(); _kbFolder = addKBFolder(KBFolderConstants.DEFAULT_PARENT_FOLDER_ID); } @Test public void testGetKBFoldersAndKBArticlesCountInKBFolder() throws Exception { addKBArticle(_kbFolder.getKbFolderId(), RandomTestUtil.randomString()); addKBArticle(_kbFolder.getKbFolderId(), RandomTestUtil.randomString()); addKBFolder(_kbFolder.getKbFolderId()); Assert.assertEquals( 3, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), _kbFolder.getKbFolderId(), WorkflowConstants.STATUS_ANY)); } @Test public void testGetKBFoldersAndKBArticlesCountInRootKBFolder() throws Exception { addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); Assert.assertEquals( 2, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY)); } @Test public void testGetKBFoldersAndKBArticlesCountInRootKBFolderByDraftStatus() throws Exception { addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); Assert.assertEquals( 1, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_DRAFT)); } @Test public void testGetKBFoldersAndKBArticlesCountKBArticleImmediateChildren() throws Exception { KBArticle parentKBArticle = addKBArticle( _kbFolder.getKbFolderId(), RandomTestUtil.randomString()); addChildKBArticle(parentKBArticle, RandomTestUtil.randomString()); addChildKBArticle(parentKBArticle, RandomTestUtil.randomString()); addKBFolder(_kbFolder.getKbFolderId()); Assert.assertEquals( 2, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), parentKBArticle.getResourcePrimKey(), WorkflowConstants.STATUS_ANY)); } @Test public void testGetKBFoldersAndKBArticlesCountKBFolderImmediateChildren() throws Exception { KBArticle parentKBArticle = addKBArticle( _kbFolder.getKbFolderId(), RandomTestUtil.randomString()); addChildKBArticle(parentKBArticle, RandomTestUtil.randomString()); addKBFolder(_kbFolder.getKbFolderId()); Assert.assertEquals( 2, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), _kbFolder.getKbFolderId(), WorkflowConstants.STATUS_ANY)); } @Test public void testGetKBFoldersAndKBArticlesCountWithMultipleKBArticleVersions() throws Exception { KBArticle kbArticle = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); updateKBArticle(kbArticle, RandomTestUtil.randomString()); Assert.assertEquals( 2, KBFolderLocalServiceUtil.getKBFoldersAndKBArticlesCount( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY)); } @Test public void testGetKBFoldersAndKBArticlesInKBFolder() throws Exception { KBArticle kbArticle1 = addKBArticle(_kbFolder.getKbFolderId(), "A"); KBArticle kbArticle2 = addKBArticle(_kbFolder.getKbFolderId(), "B"); KBFolder kbFolder = addKBFolder(_kbFolder.getKbFolderId()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), _kbFolder.getKbFolderId(), WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<KBArticle>(true, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesInRootKBFolder() throws Exception { KBArticle kbArticle = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<>(false, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle = (KBArticle)kbFolderAndKBArticles.get(1); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle.getKbArticleId(), currentKBArticle.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesInRootKBFolderByDraftStatus() throws Exception { addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_DRAFT, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<>(false, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); Assert.assertEquals( kbFolderAndKBArticles.toString(), 1, kbFolderAndKBArticles.size()); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByAscendingModifiedDate() throws Exception { Date date = new Date(); KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND)); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND * 3)); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND * 2)); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsModifiedDateComparator(true, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByAscendingPriority() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticleLocalServiceUtil.updatePriority( kbArticle2.getResourcePrimKey(), 10.0); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsPriorityComparator(true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByAscendingTitle() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "A"); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "C"); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "B"); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator(true, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByAscendingViewCount() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "A"); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "B"); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "C"); KBArticleLocalServiceUtil.updateViewCount( kbArticle2.getUserId(), kbArticle2.getResourcePrimKey(), kbArticle2.getViewCount() + 1000); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsViewCountComparator(true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByDescendingModifiedDate() throws Exception { Date date = new Date(); KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND)); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND * 3)); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, new Date(date.getTime() + Time.SECOND * 2)); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsModifiedDateComparator(false, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByDescendingPriority() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticleLocalServiceUtil.updatePriority( kbArticle2.getResourcePrimKey(), 10.0); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsPriorityComparator(false)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByDescendingTitle() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "A"); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "C"); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "B"); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator(false, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(3); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(2); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByDescendingViewCount() throws Exception { KBArticle kbArticle1 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "A"); KBArticle kbArticle2 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "B"); KBArticle kbArticle3 = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, "C"); KBArticleLocalServiceUtil.updateViewCount( kbArticle2.getUserId(), kbArticle2.getResourcePrimKey(), kbArticle2.getViewCount() + 1000); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsViewCountComparator(false)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(2); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(1); KBArticle currentKBArticle3 = (KBArticle)kbFolderAndKBArticles.get(3); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); Assert.assertEquals( kbArticle3.getKbArticleId(), currentKBArticle3.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesOrderedByTypeWithNullComparator() throws Exception { KBArticle kbArticle = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle newKBArticle = updateKBArticle( kbArticle, RandomTestUtil.randomString()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( newKBArticle.getKbArticleId(), currentKBArticle1.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesReturnKBArticleImmediateChildren() throws Exception { KBArticle parentKBArticle = addKBArticle( _kbFolder.getKbFolderId(), RandomTestUtil.randomString()); KBArticle kbArticle1 = addChildKBArticle(parentKBArticle, "A"); KBArticle kbArticle2 = addChildKBArticle(parentKBArticle, "B"); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), parentKBArticle.getResourcePrimKey(), WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<KBArticle>(true, true)); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle2 = (KBArticle)kbFolderAndKBArticles.get(1); Assert.assertEquals( kbArticle1.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbArticle2.getKbArticleId(), currentKBArticle2.getKbArticleId()); } @Test public void testGetKBFoldersAndKBArticlesReturnKBFolderImmediateChildren() throws Exception { KBArticle parentKBArticle = addKBArticle( _kbFolder.getKbFolderId(), RandomTestUtil.randomString()); addChildKBArticle(parentKBArticle, RandomTestUtil.randomString()); KBFolder kbFolder = addKBFolder(_kbFolder.getKbFolderId()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), _kbFolder.getKbFolderId(), WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<KBArticle>(true, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); Assert.assertEquals( kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( parentKBArticle.getKbArticleId(), currentKBArticle1.getKbArticleId()); Assert.assertEquals( kbFolderAndKBArticles.toString(), 2, kbFolderAndKBArticles.size()); } @Test public void testGetKBFoldersAndKBArticlesWithMultipleKBArticleVersions() throws Exception { KBArticle kbArticle = addKBArticle( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, RandomTestUtil.randomString()); KBArticle newKBArticle = updateKBArticle( kbArticle, RandomTestUtil.randomString()); List<Object> kbFolderAndKBArticles = KBFolderLocalServiceUtil.getKBFoldersAndKBArticles( _group.getGroupId(), KBFolderConstants.DEFAULT_PARENT_FOLDER_ID, WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new KBObjectsTitleComparator<>(false, true)); KBFolder currentKBFolder = (KBFolder)kbFolderAndKBArticles.get(0); KBArticle currentKBArticle1 = (KBArticle)kbFolderAndKBArticles.get(1); Assert.assertEquals( kbFolderAndKBArticles.toString(), 2, kbFolderAndKBArticles.size()); Assert.assertEquals( _kbFolder.getKbFolderId(), currentKBFolder.getKbFolderId()); Assert.assertEquals( newKBArticle.getKbArticleId(), currentKBArticle1.getKbArticleId()); } @Test(expected = KBFolderParentException.class) public void testMoveKBArticleToInvalidParentKBFolder() throws Exception { KBFolder kbFolder = addKBFolder(_kbFolder.getKbFolderId()); KBFolder kbSubfolder = addKBFolder(kbFolder.getKbFolderId()); KBFolderLocalServiceUtil.moveKBFolder( kbFolder.getKbFolderId(), kbSubfolder.getKbFolderId()); } @Test(expected = NoSuchFolderException.class) public void testMoveKBFolderToParentKBArticle() throws Exception { KBFolder kbFolder = addKBFolder(_kbFolder.getKbFolderId()); KBArticle kbArticle = addKBArticle( _kbFolder.getKbFolderId(), RandomTestUtil.randomString()); KBFolderLocalServiceUtil.moveKBFolder( kbFolder.getKbFolderId(), kbArticle.getResourcePrimKey()); } @Test public void testMoveKBFolderToParentKBFolderInHomeKBFolder() throws Exception { KBFolder kbFolder = addKBFolder( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID); KBFolder parentKBFolder = addKBFolder( KBFolderConstants.DEFAULT_PARENT_FOLDER_ID); KBFolderLocalServiceUtil.moveKBFolder( kbFolder.getKbFolderId(), parentKBFolder.getKbFolderId()); kbFolder = KBFolderLocalServiceUtil.getKBFolder( kbFolder.getKbFolderId()); Assert.assertEquals( parentKBFolder.getKbFolderId(), kbFolder.getParentKBFolderId()); } @Test public void testMoveKBFolderToParentKBFolderInKBFolder() throws Exception { KBFolder kbFolder = addKBFolder(_kbFolder.getKbFolderId()); KBFolder parentKBFolder = addKBFolder(_kbFolder.getKbFolderId()); KBFolderLocalServiceUtil.moveKBFolder( kbFolder.getKbFolderId(), parentKBFolder.getKbFolderId()); kbFolder = KBFolderLocalServiceUtil.getKBFolder( kbFolder.getKbFolderId()); Assert.assertEquals( parentKBFolder.getKbFolderId(), kbFolder.getParentKBFolderId()); } protected KBArticle addChildKBArticle(KBArticle kbArticle, String title) throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group, _user.getUserId()); return KBArticleLocalServiceUtil.addKBArticle( _user.getUserId(), PortalUtil.getClassNameId(KBArticleConstants.getClassName()), kbArticle.getResourcePrimKey(), title, title, RandomTestUtil.randomString(), RandomTestUtil.randomString(), null, new String[0], new String[0], serviceContext); } protected KBArticle addKBArticle(long parentKbFolderId, Date createDate) throws Exception { String title = RandomTestUtil.randomString(); ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group, _user.getUserId()); serviceContext.setCreateDate(createDate); serviceContext.setModifiedDate(createDate); return KBArticleLocalServiceUtil.addKBArticle( _user.getUserId(), PortalUtil.getClassNameId(KBFolderConstants.getClassName()), parentKbFolderId, title, title, RandomTestUtil.randomString(), RandomTestUtil.randomString(), null, new String[0], new String[0], serviceContext); } protected KBArticle addKBArticle(long parentKbFolderId, String title) throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group, _user.getUserId()); return KBArticleLocalServiceUtil.addKBArticle( _user.getUserId(), PortalUtil.getClassNameId(KBFolderConstants.getClassName()), parentKbFolderId, title, title, RandomTestUtil.randomString(), RandomTestUtil.randomString(), null, new String[0], new String[0], serviceContext); } protected KBFolder addKBFolder(long parentResourcePrimKey) throws com.liferay.portal.kernel.exception.PortalException { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group, _user.getUserId()); return KBFolderLocalServiceUtil.addKBFolder( _user.getUserId(), _group.getGroupId(), PortalUtil.getClassNameId(KBFolderConstants.getClassName()), parentResourcePrimKey, RandomTestUtil.randomString(), RandomTestUtil.randomString(), serviceContext); } protected KBArticle updateKBArticle(KBArticle kbArticle, String title) throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group, _user.getUserId()); return KBArticleLocalServiceUtil.updateKBArticle( kbArticle.getUserId(), kbArticle.getResourcePrimKey(), title, kbArticle.getContent(), kbArticle.getDescription(), kbArticle.getSourceURL(), null, new String[0], new long[0], serviceContext); } @DeleteAfterTestRun private Group _group; private KBFolder _kbFolder; private User _user; }