com.liferay.journal.service.persistence.test.JournalFolderFinderTest.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.journal.service.persistence.test.JournalFolderFinderTest.java

Source

/**
 * 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.journal.service.persistence.test;

import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
import com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil;
import com.liferay.journal.model.JournalArticle;
import com.liferay.journal.model.JournalFolder;
import com.liferay.journal.service.JournalArticleLocalServiceUtil;
import com.liferay.journal.service.persistence.JournalFolderFinder;
import com.liferay.journal.test.util.JournalTestUtil;
import com.liferay.portal.kernel.dao.orm.QueryDefinition;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.test.rule.AggregateTestRule;
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.TestPropsValues;
import com.liferay.portal.kernel.transaction.Propagation;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.spring.hibernate.LastSessionRecorderUtil;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.portal.test.rule.TransactionalTestRule;

import java.util.List;

import org.junit.After;
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;

import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;

/**
 * @author Zsolt Berentey
 */
@RunWith(Arquillian.class)
@Sync
public class JournalFolderFinderTest {

    @ClassRule
    @Rule
    public static final AggregateTestRule aggregateTestRule = new AggregateTestRule(
            new LiferayIntegrationTestRule(), SynchronousDestinationTestRule.INSTANCE,
            new TransactionalTestRule(Propagation.SUPPORTS, "com.liferay.journal.service"));

    @Before
    public void setUp() throws Exception {
        _group = GroupTestUtil.addGroup();

        _folder1 = JournalTestUtil.addFolder(_group.getGroupId(), "Folder 1");

        _folder2 = JournalTestUtil.addFolder(_group.getGroupId(), _folder1.getFolderId(), "Folder 2");

        JournalTestUtil.addArticle(_group.getGroupId(), _folder1.getFolderId(), "Article 1", StringPool.BLANK);

        JournalArticle article = JournalTestUtil.addArticle(_group.getGroupId(), _folder1.getFolderId(),
                "Article 2", StringPool.BLANK);

        JournalArticleLocalServiceUtil.moveArticleToTrash(TestPropsValues.getUserId(), article);

        Bundle bundle = FrameworkUtil.getBundle(getClass());

        _bundleContext = bundle.getBundleContext();

        _serviceReference = _bundleContext.getServiceReference(JournalFolderFinder.class);

        _journalFolderFinder = _bundleContext.getService(_serviceReference);
    }

    @After
    public void tearDown() {
        _bundleContext.ungetService(_serviceReference);
    }

    @Test
    public void testCountF_A_ByG_F() throws Exception {
        QueryDefinition<Object> queryDefinition = new QueryDefinition<>();

        queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);

        Assert.assertEquals(3,
                _journalFolderFinder.countF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(), queryDefinition));

        queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);

        Assert.assertEquals(1,
                _journalFolderFinder.countF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(), queryDefinition));

        queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);

        Assert.assertEquals(2,
                _journalFolderFinder.countF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(), queryDefinition));
    }

    @Test
    public void testFindF_A_ByG_F() throws Exception {
        QueryDefinition<Object> queryDefinition = new QueryDefinition<>();

        queryDefinition.setStatus(WorkflowConstants.STATUS_ANY);

        List<Object> results = _journalFolderFinder.findF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(),
                queryDefinition);

        Assert.assertEquals(results.toString(), 3, results.size());

        for (Object result : results) {
            if (result instanceof JournalFolder) {
                JournalFolder folder = (JournalFolder) result;

                Assert.assertEquals("Folder 2", folder.getName());
            } else if (result instanceof JournalArticle) {
                JournalArticle article = (JournalArticle) result;

                String title = article.getTitleCurrentValue();

                Assert.assertTrue(title, title.equals("Article 1") || title.equals("Article 2"));
            }
        }

        queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH);

        results = _journalFolderFinder.findF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(), queryDefinition);

        Assert.assertEquals(results.toString(), 1, results.size());

        for (Object result : results) {
            if (result instanceof JournalFolder) {
                JournalFolder folder = (JournalFolder) result;

                Assert.assertEquals("Folder 2", folder.getName());
            } else if (result instanceof JournalArticle) {
                JournalArticle article = (JournalArticle) result;

                Assert.assertEquals("Article 2", article.getTitleCurrentValue());
            }
        }

        queryDefinition.setStatus(WorkflowConstants.STATUS_IN_TRASH, true);

        results = _journalFolderFinder.findF_A_ByG_F(_group.getGroupId(), _folder1.getFolderId(), queryDefinition);

        Assert.assertEquals(results.toString(), 2, results.size());

        for (Object result : results) {
            if (result instanceof JournalFolder) {
                JournalFolder folder = (JournalFolder) result;

                Assert.assertEquals("Folder 2", folder.getName());
            } else if (result instanceof JournalArticle) {
                JournalArticle article = (JournalArticle) result;

                Assert.assertEquals("Article 1", article.getTitleCurrentValue());
            }
        }
    }

    @Test
    public void testFindF_ByNoAssets() throws Exception {
        AssetEntryLocalServiceUtil.deleteEntry(JournalFolder.class.getName(), _folder2.getFolderId());

        LastSessionRecorderUtil.syncLastSessionState();

        List<JournalFolder> folders = _journalFolderFinder.findF_ByNoAssets();

        Assert.assertEquals(folders.toString(), 1, folders.size());

        JournalFolder folder = folders.get(0);

        Assert.assertEquals(_folder2.getFolderId(), folder.getFolderId());
    }

    private BundleContext _bundleContext;
    private JournalFolder _folder1;
    private JournalFolder _folder2;
    private Group _group;
    private JournalFolderFinder _journalFolderFinder;
    private ServiceReference<JournalFolderFinder> _serviceReference;

}