/**
* 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.blogs.service.test;
import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
import com.liferay.asset.kernel.model.AssetEntry;
import com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil;
import com.liferay.blogs.constants.BlogsConstants;
import com.liferay.blogs.exception.EntryContentException;
import com.liferay.blogs.exception.EntryTitleException;
import com.liferay.blogs.exception.NoSuchEntryException;
import com.liferay.blogs.model.BlogsEntry;
import com.liferay.blogs.service.BlogsEntryLocalServiceUtil;
import com.liferay.blogs.util.BlogsUtil;
import com.liferay.blogs.util.test.BlogsTestUtil;
import com.liferay.message.boards.kernel.service.MBMessageLocalServiceUtil;
import com.liferay.portal.kernel.dao.orm.QueryDefinition;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.ModelHintsUtil;
import com.liferay.portal.kernel.model.Organization;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.servlet.taglib.ui.ImageSelector;
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.OrganizationTestUtil;
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.test.util.UserTestUtil;
import com.liferay.portal.kernel.util.CalendarFactoryUtil;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.MimeTypesUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.TempFileEntryUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.service.test.ServiceTestUtil;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.subscription.service.SubscriptionLocalServiceUtil;
import java.io.InputStream;
import java.util.Calendar;
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 Cristina González
* @author Manuel de la Peña
*/
@RunWith(Arquillian.class)
@Sync
public class BlogsEntryLocalServiceTest {
@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();
ServiceTestUtil.setUser(TestPropsValues.getUser());
}
@Test
public void testAddDraftEntryWithBlankTitle() throws Exception {
int initialCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusAnyQueryDefinition);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
serviceContext.setWorkflowAction(WorkflowConstants.ACTION_SAVE_DRAFT);
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), StringPool.BLANK, RandomTestUtil.randomString(),
serviceContext);
int actualCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusAnyQueryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
@Test
public void testAddDraftEntryWithNullTitle() throws Exception {
int initialCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusAnyQueryDefinition);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
serviceContext.setWorkflowAction(WorkflowConstants.ACTION_SAVE_DRAFT);
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), null, RandomTestUtil.randomString(),
serviceContext);
int actualCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusAnyQueryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
@Test
public void testAddEntry() throws Exception {
int initialCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusApprovedQueryDefinition);
addEntry(false);
int actualCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), _statusApprovedQueryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
@Test(expected = EntryContentException.class)
public void testAddEntryWithVeryLongContent() throws Exception {
int maxLength = ModelHintsUtil.getMaxLength(
BlogsEntry.class.getName(), "content");
String content = _repeat("0", maxLength + 1);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(), content,
serviceContext);
}
@Test(expected = EntryTitleException.class)
public void testAddEntryWithVeryLongTitle() throws Exception {
int maxLength = ModelHintsUtil.getMaxLength(
BlogsEntry.class.getName(), "title");
String title = _repeat("0", maxLength + 1);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), title, RandomTestUtil.randomString(),
serviceContext);
}
@Test
public void testAddOriginalImageInVisibleImageFolder() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
BlogsEntry blogsEntry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(),
RandomTestUtil.randomString(), serviceContext);
FileEntry tempFileEntry = getTempFileEntry(
_user.getUserId(), _group.getGroupId(), "image.jpg");
ImageSelector imageSelector = new ImageSelector(
FileUtil.getBytes(tempFileEntry.getContentStream()),
tempFileEntry.getTitle(), tempFileEntry.getMimeType(),
StringPool.BLANK);
long originalImageFileEntryId =
BlogsEntryLocalServiceUtil.addOriginalImageFileEntry(
_user.getUserId(), _group.getGroupId(), blogsEntry.getEntryId(),
imageSelector);
FileEntry portletFileEntry =
PortletFileRepositoryUtil.getPortletFileEntry(
originalImageFileEntryId);
Folder folder = portletFileEntry.getFolder();
Assert.assertEquals(BlogsConstants.SERVICE_NAME, folder.getName());
}
@Test(expected = NoSuchEntryException.class)
public void testDeleteEntry() throws Exception {
BlogsEntry entry = addEntry(false);
BlogsEntryLocalServiceUtil.deleteEntry(entry);
BlogsEntryLocalServiceUtil.getEntry(entry.getEntryId());
}
@Test
public void testGetCompanyEntriesCountInTrash() throws Exception {
testGetCompanyEntriesCount(true);
}
@Test
public void testGetCompanyEntriesCountNotInTrash() throws Exception {
testGetCompanyEntriesCount(false);
}
@Test
public void testGetCompanyEntriesInTrash() throws Exception {
testGetCompanyEntries(true);
}
@Test
public void testGetCompanyEntriesNotInTrash() throws Exception {
testGetCompanyEntries(false);
}
@Test
public void testGetDiscussionMessageDisplay() throws Exception {
BlogsEntry entry = addEntry(false);
MBMessageLocalServiceUtil.getDiscussionMessageDisplay(
_user.getUserId(), _group.getGroupId(), BlogsEntry.class.getName(),
entry.getEntryId(), WorkflowConstants.STATUS_ANY);
}
@Test
public void testGetEntriesPrevAndNextByDisplayDate() throws Exception {
BlogsEntry firstEntry = addEntry(false, 1);
BlogsEntry thirdEntry = addEntry(false, 3);
BlogsEntry secondEntry = addEntry(false, 2);
BlogsEntry[] entries = BlogsEntryLocalServiceUtil.getEntriesPrevAndNext(
secondEntry.getEntryId());
Assert.assertNotNull(
"The previous entry relative to entry " + secondEntry.getEntryId() +
" should be " + firstEntry.getEntryId() + " but is null",
entries[0]);
Assert.assertNotNull(
"The current entry relative to entry " + secondEntry.getEntryId() +
" should be " + secondEntry.getEntryId() + " but is null",
entries[1]);
Assert.assertNotNull(
"The next entry relative to entry " + secondEntry.getEntryId() +
" should be " + thirdEntry.getEntryId() + " but is null",
entries[2]);
Assert.assertEquals(
"The previous entry relative to entry " + secondEntry.getEntryId() +
" should be " + firstEntry.getEntryId(),
entries[0].getEntryId(), firstEntry.getEntryId());
Assert.assertEquals(
"The current entry relative to entry " + secondEntry.getEntryId() +
" should be " + secondEntry.getEntryId(),
entries[1].getEntryId(), secondEntry.getEntryId());
Assert.assertEquals(
"The next entry relative to entry " + secondEntry.getEntryId() +
" should be " + thirdEntry.getEntryId(),
entries[2].getEntryId(), thirdEntry.getEntryId());
}
@Test
public void testGetEntriesPrevAndNextRelativeToCurrentEntry()
throws Exception {
BlogsEntry previousEntry = addEntry(false);
BlogsEntry currentEntry = addEntry(false);
BlogsEntry nextEntry = addEntry(false);
BlogsEntry[] entries = BlogsEntryLocalServiceUtil.getEntriesPrevAndNext(
currentEntry.getEntryId());
Assert.assertNotNull(
"The previous entry relative to entry " +
currentEntry.getEntryId() + " should be " +
previousEntry.getEntryId() + " but is null",
entries[0]);
Assert.assertNotNull(
"The current entry relative to entry " + currentEntry.getEntryId() +
" should be " + currentEntry.getEntryId() + " but is null",
entries[1]);
Assert.assertNotNull(
"The next entry relative to entry " + currentEntry.getEntryId() +
" should be " + nextEntry.getEntryId() + " but is null",
entries[2]);
Assert.assertEquals(
"The previous entry relative to entry" + currentEntry.getEntryId() +
" should be " +
previousEntry.getEntryId(),
entries[0].getEntryId(), previousEntry.getEntryId());
Assert.assertEquals(
"The current entry relative to entry " + currentEntry.getEntryId() +
" should be " + currentEntry.getEntryId(),
entries[1].getEntryId(), currentEntry.getEntryId());
Assert.assertEquals(
"The next entry relative to entry " + currentEntry.getEntryId() +
" should be " + nextEntry.getEntryId(),
entries[2].getEntryId(), nextEntry.getEntryId());
}
@Test
public void testGetEntriesPrevAndNextRelativeToNextEntry()
throws Exception {
addEntry(false);
BlogsEntry currentEntry = addEntry(false);
BlogsEntry nextEntry = addEntry(false);
BlogsEntry[] entries = BlogsEntryLocalServiceUtil.getEntriesPrevAndNext(
nextEntry.getEntryId());
Assert.assertNull(
"The next entry relative to entry " + nextEntry.getEntryId() +
" should be null",
entries[2]);
Assert.assertNotNull(
"The current entry relative to entry " + nextEntry.getEntryId() +
" should be " + nextEntry.getEntryId() + " but is null",
entries[1]);
Assert.assertNotNull(
"The previous entry relative to entry " + nextEntry.getEntryId() +
" should be " + currentEntry.getEntryId() + " but is null",
entries[0]);
Assert.assertEquals(
"The previous entry relative to entry " + nextEntry.getEntryId() +
" should be " + currentEntry.getEntryId(),
entries[0].getEntryId(), currentEntry.getEntryId());
Assert.assertEquals(
"The current entry relative to entry" + nextEntry.getEntryId() +
" should be " + nextEntry.getEntryId(),
entries[1].getEntryId(), nextEntry.getEntryId());
}
@Test
public void testGetEntriesPrevAndNextRelativeToPreviousEntry()
throws Exception {
BlogsEntry previousEntry = addEntry(false);
BlogsEntry currentEntry = addEntry(false);
addEntry(false);
BlogsEntry[] entries = BlogsEntryLocalServiceUtil.getEntriesPrevAndNext(
previousEntry.getEntryId());
Assert.assertNull(
"The previous entry relative to entry " +
previousEntry.getEntryId() + " should be null",
entries[0]);
Assert.assertNotNull(
"The current entry relative to entry " +
previousEntry.getEntryId() + " should be " +
previousEntry.getEntryId() + " but is null",
entries[1]);
Assert.assertNotNull(
"The next entry relative to entry " + previousEntry.getEntryId() +
" should be " + currentEntry.getEntryId() + " but is null",
entries[2]);
Assert.assertEquals(
"The current entry relative to entry " +
previousEntry.getEntryId() + " should be " +
previousEntry.getEntryId(),
entries[1].getEntryId(), previousEntry.getEntryId());
Assert.assertEquals(
"The next entry relative to entry " + previousEntry.getEntryId() +
" should be " + currentEntry.getEntryId(),
entries[2].getEntryId(), currentEntry.getEntryId());
}
@Test
public void testGetEntryByGroupAndOldUrlTitle() throws Exception {
BlogsEntry expectedEntry = addEntry(false);
String oldUrlTitle = expectedEntry.getUrlTitle();
String urlTitle = "new-friendly-url";
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.updateEntry(
expectedEntry.getUserId(), expectedEntry.getEntryId(),
expectedEntry.getTitle(), expectedEntry.getSubtitle(), urlTitle,
expectedEntry.getDescription(), expectedEntry.getContent(),
expectedEntry.getDisplayDate(), expectedEntry.isAllowPingbacks(),
expectedEntry.isAllowTrackbacks(), new String[0],
expectedEntry.getCoverImageCaption(), null, null, serviceContext);
BlogsEntry actualEntry = BlogsEntryLocalServiceUtil.getEntry(
expectedEntry.getGroupId(), oldUrlTitle);
BlogsTestUtil.assertEquals(expectedEntry, actualEntry);
actualEntry = BlogsEntryLocalServiceUtil.getEntry(
expectedEntry.getGroupId(), urlTitle);
BlogsTestUtil.assertEquals(expectedEntry, actualEntry);
}
@Test
public void testGetEntryByGroupAndUrlTitle() throws Exception {
BlogsEntry expectedEntry = addEntry(false);
BlogsEntry actualEntry = BlogsEntryLocalServiceUtil.getEntry(
expectedEntry.getGroupId(), expectedEntry.getUrlTitle());
BlogsTestUtil.assertEquals(expectedEntry, actualEntry);
}
@Test
public void testGetGroupEntriesCountInTrashWithDisplayDate()
throws Exception {
testGetGroupEntriesCount(true, true);
}
@Test
public void testGetGroupEntriesCountInTrashWithoutDisplayDate()
throws Exception {
testGetGroupEntriesCount(true, false);
}
@Test
public void testGetGroupEntriesCountNotInTrashWithDisplayDate()
throws Exception {
testGetGroupEntriesCount(false, true);
}
@Test
public void testGetGroupEntriesCountNotInTrashWithoutDisplayDate()
throws Exception {
testGetGroupEntriesCount(false, false);
}
@Test
public void testGetGroupEntriesInTrashWithDisplayDate() throws Exception {
testGetGroupEntries(true, true);
}
@Test
public void testGetGroupEntriesInTrashWithoutDisplayDate()
throws Exception {
testGetGroupEntries(true, false);
}
@Test
public void testGetGroupEntriesNotInTrashWithDisplayDate()
throws Exception {
testGetGroupEntries(false, true);
}
@Test
public void testGetGroupEntriesNotInTrashWithoutDisplayDate()
throws Exception {
testGetGroupEntries(false, false);
}
@Test
public void testGetGroupsEntries() throws Exception {
List<BlogsEntry> groupsEntries =
BlogsEntryLocalServiceUtil.getGroupsEntries(
_user.getCompanyId(), _group.getGroupId(), new Date(),
_statusInTrashQueryDefinition);
int initialCount = groupsEntries.size();
addEntry(false);
addEntry(true);
List<BlogsEntry> groupsEntriesInTrash =
BlogsEntryLocalServiceUtil.getGroupsEntries(
_user.getCompanyId(), _group.getGroupId(), new Date(),
_statusInTrashQueryDefinition);
Assert.assertEquals(
groupsEntriesInTrash.toString(), initialCount + 1,
groupsEntriesInTrash.size());
for (BlogsEntry groupsEntry : groupsEntriesInTrash) {
Assert.assertEquals(
"Entry " + groupsEntry.getEntryId() + " is not in trash",
WorkflowConstants.STATUS_IN_TRASH, groupsEntry.getStatus());
Assert.assertEquals(
"Entry belongs to company " + groupsEntry.getCompanyId() +
" but should belong to company " + _user.getCompanyId(),
_user.getCompanyId(), groupsEntry.getCompanyId());
}
}
@Test
public void testGetGroupUserEntriesCountInTrash() throws Exception {
testGetGroupUserEntriesCount(true);
}
@Test
public void testGetGroupUserEntriesCountNotInTrash() throws Exception {
testGetGroupUserEntriesCount(false);
}
@Test
public void testGetGroupUserEntriesInTrash() throws Exception {
testGetGroupUserEntries(true);
}
@Test
public void testGetGroupUserEntriesNotInTrash() throws Exception {
testGetGroupUserEntries(false);
}
@Test
public void testGetNoAssetEntries() throws Exception {
BlogsEntry entry = addEntry(false);
AssetEntry assetEntry = AssetEntryLocalServiceUtil.fetchEntry(
BlogsEntry.class.getName(), entry.getEntryId());
Assert.assertNotNull(assetEntry);
AssetEntryLocalServiceUtil.deleteAssetEntry(assetEntry);
List<BlogsEntry> entries =
BlogsEntryLocalServiceUtil.getNoAssetEntries();
Assert.assertEquals(entries.toString(), 1, entries.size());
Assert.assertEquals(entry, entries.get(0));
}
@Test
public void testGetOrganizationEntriesCountInTrash() throws Exception {
testGetOrganizationEntriesCount(true);
}
@Test
public void testGetOrganizationEntriesCountNotInTrash() throws Exception {
testGetOrganizationEntriesCount(false);
}
@Test
public void testGetOrganizationEntriesInTrash() throws Exception {
testGetOrganizationEntries(true);
}
@Test
public void testGetOrganizationEntriesNotInTrash() throws Exception {
testGetOrganizationEntries(false);
}
@Test(expected = EntryTitleException.class)
public void testPublishWithBlankTitle() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), StringPool.BLANK, RandomTestUtil.randomString(),
serviceContext);
}
@Test(expected = EntryTitleException.class)
public void testPublishWithNullTitle() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), null, RandomTestUtil.randomString(),
serviceContext);
}
@Test(expected = EntryTitleException.class)
public void testPublishWithoutTitle() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), StringPool.BLANK, RandomTestUtil.randomString(),
serviceContext);
}
@Test
public void testSubscribe() throws Exception {
int initialCount =
SubscriptionLocalServiceUtil.getUserSubscriptionsCount(
_user.getUserId());
BlogsEntryLocalServiceUtil.subscribe(
_user.getUserId(), _group.getGroupId());
int actualCount =
SubscriptionLocalServiceUtil.getUserSubscriptionsCount(
_user.getUserId());
Assert.assertEquals(initialCount + 1, actualCount);
}
@Test
public void testUnsubscribe() throws Exception {
int initialCount =
SubscriptionLocalServiceUtil.getUserSubscriptionsCount(
_user.getUserId());
BlogsEntryLocalServiceUtil.subscribe(
_user.getUserId(), _group.getGroupId());
BlogsEntryLocalServiceUtil.unsubscribe(
_user.getUserId(), _group.getGroupId());
int actualCount =
SubscriptionLocalServiceUtil.getUserSubscriptionsCount(
_user.getUserId());
Assert.assertEquals(initialCount, actualCount);
}
@Test
public void testUpdateEntryResources() throws Exception {
BlogsEntry entry = addEntry(false);
BlogsEntryLocalServiceUtil.updateEntryResources(
entry, new String[] {ActionKeys.ADD_DISCUSSION}, null);
}
@Test
public void testURLTitleIsNotUpdatedWhenUpdatingEntryTitle()
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(),
RandomTestUtil.randomString(), serviceContext);
String urlTitle = entry.getUrlTitle();
entry = BlogsEntryLocalServiceUtil.updateEntry(
_user.getUserId(), entry.getEntryId(),
RandomTestUtil.randomString(), RandomTestUtil.randomString(),
serviceContext);
Assert.assertEquals(urlTitle, entry.getUrlTitle());
}
@Test
public void testURLTitleIsNotUpdatedWhenUpdatingEntryTitleToDraftEntry()
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(),
RandomTestUtil.randomString(), serviceContext);
String urlTitle = entry.getUrlTitle();
serviceContext.setWorkflowAction(WorkflowConstants.STATUS_DRAFT);
entry = BlogsEntryLocalServiceUtil.updateEntry(
_user.getUserId(), entry.getEntryId(),
RandomTestUtil.randomString(), RandomTestUtil.randomString(),
serviceContext);
Assert.assertEquals(urlTitle, entry.getUrlTitle());
}
@Test
public void testURLTitleIsSavedWhenAddingApprovedEntry() throws Exception {
String title = RandomTestUtil.randomString();
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), title, RandomTestUtil.randomString(),
serviceContext);
Assert.assertEquals(
BlogsUtil.getUrlTitle(entry.getEntryId(), title),
entry.getUrlTitle());
}
@Test
public void testURLTitleIsSavedWhenAddingApprovedEntryWithWorkflow()
throws Exception {
String title = RandomTestUtil.randomString();
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntry entry = BlogsTestUtil.addEntryWithWorkflow(
_user.getUserId(), title, true, serviceContext);
Assert.assertEquals(
BlogsUtil.getUrlTitle(entry.getEntryId(), title),
entry.getUrlTitle());
}
@Test
public void testURLTitleIsSavedWhenAddingDraftEntry() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
serviceContext.setWorkflowAction(WorkflowConstants.STATUS_DRAFT);
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
_user.getUserId(), RandomTestUtil.randomString(),
RandomTestUtil.randomString(), serviceContext);
Assert.assertTrue(Validator.isNotNull(entry.getUrlTitle()));
}
@Test
public void testURLTitleIsSavedWhenAddingDraftEntryWithWorkflow()
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(_group, _user.getUserId());
BlogsEntry entry = BlogsTestUtil.addEntryWithWorkflow(
_user.getUserId(), RandomTestUtil.randomString(), false,
serviceContext);
Assert.assertTrue(Validator.isNotNull(entry.getUrlTitle()));
}
protected BlogsEntry addEntry(boolean statusInTrash) throws Exception {
return addEntry(_user.getUserId(), statusInTrash);
}
protected BlogsEntry addEntry(boolean statusInTrash, int date)
throws Exception {
return addEntry(_user.getUserId(), statusInTrash, date);
}
protected BlogsEntry addEntry(long userId, boolean statusInTrash)
throws Exception {
return addEntry(userId, statusInTrash, 1);
}
protected BlogsEntry addEntry(long userId, boolean statusInTrash, int date)
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), userId);
Calendar displayDateCalendar = CalendarFactoryUtil.getCalendar(
2012, 1, date);
BlogsEntry entry = BlogsEntryLocalServiceUtil.addEntry(
userId, RandomTestUtil.randomString(),
RandomTestUtil.randomString(), displayDateCalendar.getTime(),
serviceContext);
if (statusInTrash) {
entry = BlogsEntryLocalServiceUtil.moveEntryToTrash(userId, entry);
}
return entry;
}
protected void assertBlogsEntriesStatus(
List<BlogsEntry> entries, boolean statusInTrash) {
for (BlogsEntry entry : entries) {
if (statusInTrash) {
Assert.assertEquals(
"The entry " + entry.getEntryId() + " should be in trash",
WorkflowConstants.STATUS_IN_TRASH, entry.getStatus());
}
else {
Assert.assertNotEquals(
"The entry " + entry.getEntryId() +
" should not be in trash",
WorkflowConstants.STATUS_IN_TRASH, entry.getStatus());
}
}
}
protected FileEntry getTempFileEntry(
long userId, long groupId, String title)
throws PortalException {
Class<?> clazz = getClass();
ClassLoader classLoader = clazz.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(
"com/liferay/blogs/dependencies/test.jpg");
return TempFileEntryUtil.addTempFileEntry(
groupId, userId, BlogsEntry.class.getName(), title, inputStream,
MimeTypesUtil.getContentType(title));
}
protected void testGetCompanyEntries(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
List<BlogsEntry> initialEntries =
BlogsEntryLocalServiceUtil.getCompanyEntries(
_user.getCompanyId(), new Date(), queryDefinition);
int initialCount = initialEntries.size();
addEntry(false);
addEntry(true);
List<BlogsEntry> actualEntries =
BlogsEntryLocalServiceUtil.getCompanyEntries(
_user.getCompanyId(), new Date(), queryDefinition);
Assert.assertEquals(
actualEntries.toString(), initialCount + 1, actualEntries.size());
assertBlogsEntriesStatus(actualEntries, statusInTrash);
}
protected void testGetCompanyEntriesCount(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
int initialCount = BlogsEntryLocalServiceUtil.getCompanyEntriesCount(
_user.getCompanyId(), new Date(), queryDefinition);
addEntry(false);
addEntry(true);
int actualCount = BlogsEntryLocalServiceUtil.getCompanyEntriesCount(
_user.getCompanyId(), new Date(), queryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
protected void testGetGroupEntries(
boolean statusInTrash, boolean displayDate)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
List<BlogsEntry> initialEntries = null;
if (displayDate) {
initialEntries = BlogsEntryLocalServiceUtil.getGroupEntries(
_group.getGroupId(), new Date(), queryDefinition);
}
else {
initialEntries = BlogsEntryLocalServiceUtil.getGroupEntries(
_group.getGroupId(), queryDefinition);
}
int initialCount = initialEntries.size();
addEntry(false);
addEntry(true);
List<BlogsEntry> actualEntries = null;
if (displayDate) {
actualEntries = BlogsEntryLocalServiceUtil.getGroupEntries(
_group.getGroupId(), new Date(), queryDefinition);
}
else {
actualEntries = BlogsEntryLocalServiceUtil.getGroupEntries(
_group.getGroupId(), queryDefinition);
}
Assert.assertEquals(
actualEntries.toString(), initialCount + 1, actualEntries.size());
assertBlogsEntriesStatus(actualEntries, statusInTrash);
}
protected void testGetGroupEntriesCount(
boolean statusInTrash, boolean displayDate)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
int initialCount = 0;
if (displayDate) {
initialCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), new Date(), queryDefinition);
}
else {
initialCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), queryDefinition);
}
addEntry(false);
addEntry(true);
int actualCount = 0;
if (displayDate) {
actualCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), new Date(), queryDefinition);
}
else {
actualCount = BlogsEntryLocalServiceUtil.getGroupEntriesCount(
_group.getGroupId(), queryDefinition);
}
Assert.assertEquals(initialCount + 1, actualCount);
}
protected void testGetGroupUserEntries(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
List<BlogsEntry> initialEntries =
BlogsEntryLocalServiceUtil.getGroupUserEntries(
_group.getGroupId(), _user.getUserId(), new Date(),
queryDefinition);
int initialCount = initialEntries.size();
addEntry(false);
addEntry(true);
List<BlogsEntry> actualEntries =
BlogsEntryLocalServiceUtil.getGroupUserEntries(
_group.getGroupId(), _user.getUserId(), new Date(),
queryDefinition);
Assert.assertEquals(
actualEntries.toString(), initialCount + 1, actualEntries.size());
assertBlogsEntriesStatus(actualEntries, statusInTrash);
}
protected void testGetGroupUserEntriesCount(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
int initialCount = BlogsEntryLocalServiceUtil.getGroupUserEntriesCount(
_group.getGroupId(), _user.getUserId(), new Date(),
queryDefinition);
addEntry(false);
addEntry(true);
int actualCount = BlogsEntryLocalServiceUtil.getGroupUserEntriesCount(
_group.getGroupId(), _user.getUserId(), new Date(),
queryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
protected void testGetOrganizationEntries(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
_organization = OrganizationTestUtil.addOrganization();
_organizationUser = UserTestUtil.addOrganizationOwnerUser(
_organization);
List<BlogsEntry> initialEntries =
BlogsEntryLocalServiceUtil.getOrganizationEntries(
_organization.getOrganizationId(), new Date(), queryDefinition);
int initialCount = initialEntries.size();
addEntry(_organizationUser.getUserId(), false);
addEntry(_organizationUser.getUserId(), true);
List<BlogsEntry> actualEntries =
BlogsEntryLocalServiceUtil.getOrganizationEntries(
_organization.getOrganizationId(), new Date(), queryDefinition);
Assert.assertEquals(
actualEntries.toString(), initialCount + 1, actualEntries.size());
assertBlogsEntriesStatus(actualEntries, statusInTrash);
}
protected void testGetOrganizationEntriesCount(boolean statusInTrash)
throws Exception {
QueryDefinition<BlogsEntry> queryDefinition =
_statusInTrashQueryDefinition;
if (!statusInTrash) {
queryDefinition = _statusAnyQueryDefinition;
}
_organization = OrganizationTestUtil.addOrganization();
_organizationUser = UserTestUtil.addOrganizationOwnerUser(
_organization);
int initialCount =
BlogsEntryLocalServiceUtil.getOrganizationEntriesCount(
_organization.getOrganizationId(), new Date(), queryDefinition);
addEntry(_organizationUser.getUserId(), false);
addEntry(_organizationUser.getUserId(), true);
int actualCount =
BlogsEntryLocalServiceUtil.getOrganizationEntriesCount(
_organization.getOrganizationId(), new Date(), queryDefinition);
Assert.assertEquals(initialCount + 1, actualCount);
}
private static String _repeat(String string, int times) {
StringBundler sb = new StringBundler(times);
for (int i = 0; i < times; i++) {
sb.append(string);
}
return sb.toString();
}
@DeleteAfterTestRun
private Group _group;
@DeleteAfterTestRun
private Organization _organization;
@DeleteAfterTestRun
private User _organizationUser;
private final QueryDefinition<BlogsEntry> _statusAnyQueryDefinition =
new QueryDefinition<>(
WorkflowConstants.STATUS_ANY, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
null);
private final QueryDefinition<BlogsEntry> _statusApprovedQueryDefinition =
new QueryDefinition<>(
WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
private final QueryDefinition<BlogsEntry> _statusInTrashQueryDefinition =
new QueryDefinition<>(
WorkflowConstants.STATUS_IN_TRASH, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
private User _user;
}