/** * 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.dynamic.data.mapping.service.test; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.dynamic.data.mapping.exception.TemplateDuplicateTemplateKeyException; import com.liferay.dynamic.data.mapping.exception.TemplateNameException; import com.liferay.dynamic.data.mapping.exception.TemplateScriptException; import com.liferay.dynamic.data.mapping.model.DDMTemplate; import com.liferay.dynamic.data.mapping.model.DDMTemplateConstants; import com.liferay.dynamic.data.mapping.service.DDMTemplateLocalServiceUtil; import com.liferay.dynamic.data.mapping.util.comparator.TemplateIdComparator; import com.liferay.portal.kernel.dao.orm.QueryUtil; import com.liferay.portal.kernel.template.TemplateConstants; 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.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.StringPool; import com.liferay.portal.kernel.util.StringUtil; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portal.test.rule.LiferayIntegrationTestRule; import java.util.List; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; /** * @author Eduardo Garcia */ @RunWith(Arquillian.class) @Sync public class DDMTemplateLocalServiceTest extends BaseDDMServiceTestCase { @ClassRule @Rule public static final AggregateTestRule aggregateTestRule = new AggregateTestRule( new LiferayIntegrationTestRule(), SynchronousDestinationTestRule.INSTANCE); @BeforeClass public static void setUpClass() { _classNameId = PortalUtil.getClassNameId(DDL_RECORD_CLASS_NAME); _resourceClassNameId = PortalUtil.getClassNameId( DDL_RECORD_SET_CLASS_NAME); } @Test public void testAddTemplateWithDuplicateKey() throws Exception { String templateKey = RandomTestUtil.randomString(); String language = TemplateConstants.LANG_TYPE_VM; try { addTemplate( _classNameId, 0, templateKey, "Test Template 1", DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, DDMTemplateConstants.TEMPLATE_MODE_CREATE, language, getTestTemplateScript(language), WorkflowConstants.STATUS_APPROVED); addTemplate( _classNameId, 0, templateKey, "Test Template 2", DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, DDMTemplateConstants.TEMPLATE_MODE_CREATE, language, getTestTemplateScript(language), WorkflowConstants.STATUS_APPROVED); Assert.fail(); } catch (TemplateDuplicateTemplateKeyException tdtke) { } } @Test public void testAddTemplateWithoutName() throws Exception { String language = TemplateConstants.LANG_TYPE_VM; try { addTemplate( _classNameId, 0, null, StringPool.BLANK, DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, DDMTemplateConstants.TEMPLATE_MODE_CREATE, language, getTestTemplateScript(language), WorkflowConstants.STATUS_APPROVED); Assert.fail(); } catch (TemplateNameException tne) { } } @Test public void testAddTemplateWithoutScript() throws Exception { try { addTemplate( _classNameId, 0, null, "Test Template", DDMTemplateConstants.TEMPLATE_TYPE_FORM, DDMTemplateConstants.TEMPLATE_MODE_CREATE, TemplateConstants.LANG_TYPE_VM, StringPool.BLANK, WorkflowConstants.STATUS_APPROVED); Assert.fail(); } catch (TemplateScriptException tse) { } } @Test public void testCopyTemplates() throws Exception { int initialCount = DDMTemplateLocalServiceUtil.getTemplatesCount( group.getGroupId(), _classNameId, 0); DDMTemplate template = addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Test Template", "Test Template", WorkflowConstants.STATUS_APPROVED); copyTemplate(template); int count = DDMTemplateLocalServiceUtil.getTemplatesCount( group.getGroupId(), _classNameId, 0); Assert.assertEquals(initialCount + 2, count); } @Test public void testDeleteTemplate() throws Exception { DDMTemplate template = addDisplayTemplate( _classNameId, 0, "Test Template", WorkflowConstants.STATUS_APPROVED); DDMTemplateLocalServiceUtil.deleteTemplate(template.getTemplateId()); Assert.assertNull( DDMTemplateLocalServiceUtil.fetchDDMTemplate( template.getTemplateId())); } @Test public void testFetchTemplate() throws Exception { DDMTemplate template = addDisplayTemplate( _classNameId, _resourceClassNameId, "Test Template", WorkflowConstants.STATUS_APPROVED); Assert.assertNotNull( DDMTemplateLocalServiceUtil.fetchTemplate( template.getGroupId(), _classNameId, template.getTemplateKey())); } @Test public void testGetTemplates() throws Exception { DDMTemplate template = addDisplayTemplate( _classNameId, _resourceClassNameId, "Test Template", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.getTemplates( template.getGroupId(), template.getClassNameId()); Assert.assertTrue(templates.contains(template)); } @Test public void testSearchByAnyStatus() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Event", null, WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Contact", null, WorkflowConstants.STATUS_DRAFT); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, null, null, null, null, null, WorkflowConstants.STATUS_ANY, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); Assert.assertEquals(templates.toString(), 2, templates.size()); } @Test public void testSearchByDescription() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Event", "Event", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Contact", "Contact", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Meeting", "Meeting", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, null, "Meeting", null, null, null, WorkflowConstants.STATUS_APPROVED, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); Assert.assertEquals(templates.toString(), 1, templates.size()); DDMTemplate template = templates.get(0); Assert.assertEquals( "Meeting", template.getDescription(group.getDefaultLanguageId())); } @Test public void testSearchByDraftStatus() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Event", null, WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Contact", null, WorkflowConstants.STATUS_DRAFT); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, null, null, null, null, null, WorkflowConstants.STATUS_DRAFT, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); Assert.assertEquals(templates.toString(), 1, templates.size()); } @Test public void testSearchByKeywords() throws Exception { addDisplayTemplate( _classNameId, _resourceClassNameId, "Event Template", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, _resourceClassNameId, "Contact Template", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, "Event", null, null, WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new TemplateIdComparator(true)); Assert.assertEquals(templates.toString(), 1, templates.size()); Assert.assertEquals( "Event Template", getTemplateName(templates.get(0))); templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, "Template", null, null, WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new TemplateIdComparator(true)); Assert.assertEquals( "Event Template", getTemplateName(templates.get(0))); Assert.assertEquals( "Contact Template", getTemplateName(templates.get(1))); } @Test public void testSearchByName() throws Exception { addDisplayTemplate( _classNameId, _resourceClassNameId, "Event", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, _resourceClassNameId, "Contact", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, _resourceClassNameId, "Meeting", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, "Event", null, null, null, null, WorkflowConstants.STATUS_APPROVED, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); Assert.assertEquals(templates.toString(), 1, templates.size()); Assert.assertEquals("Event", getTemplateName(templates.get(0))); } @Test public void testSearchByNameAndDescription() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Event", "Event", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Contact", "Contact", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Meeting", "Meeting", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, 0, "Event", "Meeting", null, null, null, WorkflowConstants.STATUS_APPROVED, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); Assert.assertEquals(templates.toString(), 0, templates.size()); } @Test public void testSearchByNameOrDescription() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Event", "Event", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Contact", "Contact", WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Meeting", "Meeting", WorkflowConstants.STATUS_APPROVED); List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.search( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, "Event", "Meeting", null, null, null, WorkflowConstants.STATUS_APPROVED, false, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new TemplateIdComparator(true)); Assert.assertEquals("Event", getTemplateName(templates.get(0))); Assert.assertEquals("Meeting", getTemplateName(templates.get(1))); } @Test public void testSearchCount() throws Exception { int initialCount = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), group.getGroupId(), _classNameId, 0, 0, "Test Template", null, null, null, null, WorkflowConstants.STATUS_APPROVED, false); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Test Template", "Test Template", WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), group.getGroupId(), _classNameId, 0, _resourceClassNameId, "Test Template", null, null, null, null, WorkflowConstants.STATUS_APPROVED, false); Assert.assertEquals(initialCount + 1, count); } @Test public void testSearchCountByClassNameIdAndClassPK() throws Exception { long classNameId1 = RandomTestUtil.randomLong(); long classPK1 = RandomTestUtil.randomLong(); addDisplayTemplate( classNameId1, classPK1, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( classNameId1, RandomTestUtil.randomLong(), _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); long classNameId2 = RandomTestUtil.randomLong(); addDisplayTemplate( classNameId2, RandomTestUtil.randomLong(), _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, new long[] {classNameId1}, new long[] {classPK1}, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(1, count); count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, new long[] {classNameId2}, new long[] {classPK1}, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(0, count); } @Test public void testSearchCountByClassNameIds() throws Exception { long classNameId1 = RandomTestUtil.randomLong(); addDisplayTemplate( classNameId1, _resourceClassNameId, StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( classNameId1, _resourceClassNameId, StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( classNameId1, _resourceClassNameId, StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); long classNameId2 = RandomTestUtil.randomLong(); addDisplayTemplate( classNameId2, _resourceClassNameId, StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( classNameId2, _resourceClassNameId, StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, new long[] {classNameId1}, null, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(3, count); count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, new long[] {classNameId1, classNameId2}, null, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(5, count); } @Test public void testSearchCountByClassPKs() throws Exception { long classPK1 = RandomTestUtil.randomLong(); addDisplayTemplate( _classNameId, classPK1, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); long classPK2 = RandomTestUtil.randomLong(); addDisplayTemplate( _classNameId, classPK2, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); long classPK3 = RandomTestUtil.randomLong(); addDisplayTemplate( _classNameId, classPK3, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, new long[] {classPK1, classPK2, classPK3}, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(3, count); } @Test public void testSearchCountByKeywords() throws Exception { int initialCount = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), group.getGroupId(), _classNameId, 0, 0, null, null, null, WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, "Test Template", "Test Template", WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), group.getGroupId(), _classNameId, 0, _resourceClassNameId, "Test", null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(initialCount + 1, count); } @Test public void testSearchCountByLanguage() throws Exception { String velocityLanguage = TemplateConstants.LANG_TYPE_VM; addTemplate( RandomTestUtil.randomLong(), RandomTestUtil.randomLong(), StringUtil.randomString(), StringPool.BLANK, StringPool.BLANK, velocityLanguage, getTestTemplateScript(velocityLanguage), WorkflowConstants.STATUS_APPROVED); addTemplate( RandomTestUtil.randomLong(), RandomTestUtil.randomLong(), StringUtil.randomString(), StringPool.BLANK, StringPool.BLANK, velocityLanguage, getTestTemplateScript(velocityLanguage), WorkflowConstants.STATUS_APPROVED); String freeMarkerLanguage = TemplateConstants.LANG_TYPE_FTL; addTemplate( RandomTestUtil.randomLong(), RandomTestUtil.randomLong(), StringUtil.randomString(), StringPool.BLANK, StringPool.BLANK, freeMarkerLanguage, getTestTemplateScript(freeMarkerLanguage), WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, null, null, null, null, TemplateConstants.LANG_TYPE_VM, WorkflowConstants.STATUS_APPROVED, true); Assert.assertEquals(2, count); } @Test public void testSearchCountByResourceClassNameId() throws Exception { addDisplayTemplate( _classNameId, 0, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); addDisplayTemplate( _classNameId, 0, _resourceClassNameId, StringUtil.randomString(), StringUtil.randomString(), WorkflowConstants.STATUS_APPROVED); int count = DDMTemplateLocalServiceUtil.searchCount( TestPropsValues.getCompanyId(), new long[] {group.getGroupId()}, null, null, _resourceClassNameId, null, null, null, WorkflowConstants.STATUS_APPROVED); Assert.assertEquals(3, count); } protected DDMTemplate copyTemplate(DDMTemplate template) throws Exception { return DDMTemplateLocalServiceUtil.copyTemplate( template.getUserId(), template.getTemplateId(), ServiceContextTestUtil.getServiceContext(group.getGroupId())); } protected String getTemplateName(DDMTemplate template) { return template.getName(group.getDefaultLanguageId()); } protected DDMTemplate updateTemplate(DDMTemplate template) throws Exception { return DDMTemplateLocalServiceUtil.updateTemplate( template.getUserId(), template.getTemplateId(), template.getClassPK(), template.getNameMap(), template.getDescriptionMap(), template.getType(), template.getMode(), template.getLanguage(), template.getScript(), template.isCacheable(), template.isSmallImage(), template.getSmallImageURL(), null, ServiceContextTestUtil.getServiceContext()); } private static long _classNameId; private static long _resourceClassNameId; }