diff --git a/dotCMS/src/integration-test/java/com/dotmarketing/portlets/templates/business/TemplateAPITest.java b/dotCMS/src/integration-test/java/com/dotmarketing/portlets/templates/business/TemplateAPITest.java index 3d39384c5406..85474176b21a 100644 --- a/dotCMS/src/integration-test/java/com/dotmarketing/portlets/templates/business/TemplateAPITest.java +++ b/dotCMS/src/integration-test/java/com/dotmarketing/portlets/templates/business/TemplateAPITest.java @@ -1,37 +1,24 @@ package com.dotmarketing.portlets.templates.business; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - +import com.dotcms.IntegrationTestBase; import com.dotcms.datagen.HTMLPageDataGen; +import com.dotcms.util.IntegrationTestInitService; +import com.dotmarketing.beans.ContainerStructure; +import com.dotmarketing.beans.Host; +import com.dotmarketing.beans.Inode; +import com.dotmarketing.business.APILocator; +import com.dotmarketing.business.CacheLocator; import com.dotmarketing.business.UserAPI; import com.dotmarketing.business.VersionableAPI; import com.dotmarketing.exception.DotDataException; import com.dotmarketing.exception.DotSecurityException; +import com.dotmarketing.portlets.AssetUtil; import com.dotmarketing.portlets.containers.business.ContainerAPI; +import com.dotmarketing.portlets.containers.model.Container; import com.dotmarketing.portlets.contentlet.business.HostAPI; import com.dotmarketing.portlets.contentlet.model.Contentlet; import com.dotmarketing.portlets.folders.model.Folder; import com.dotmarketing.portlets.htmlpageasset.model.HTMLPageAsset; - -import java.util.ArrayList; -import java.util.List; - -import com.dotcms.IntegrationTestBase; -import com.dotcms.util.IntegrationTestInitService; - -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import com.dotmarketing.beans.ContainerStructure; -import com.dotmarketing.beans.Host; -import com.dotmarketing.beans.Inode; -import com.dotmarketing.business.APILocator; -import com.dotmarketing.business.CacheLocator; -import com.dotmarketing.portlets.AssetUtil; -import com.dotmarketing.portlets.containers.model.Container; import com.dotmarketing.portlets.structure.model.Structure; import com.dotmarketing.portlets.templates.model.Template; import com.dotmarketing.util.InodeUtils; @@ -39,6 +26,18 @@ import com.dotmarketing.util.UtilMethods; import com.liferay.portal.model.User; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + public class TemplateAPITest extends IntegrationTestBase { private static ContainerAPI containerAPI; @@ -272,4 +271,39 @@ public void testFindTemplatesAssignedTo() throws DotDataException, DotSecurityEx assertNotNull(result); assertTrue(!result.isEmpty()); } + + @Test + public void copyTemplate() throws Exception { + Template oldTemplate = null; + Template newTemplate = null; + + try { + //Create a Template. + oldTemplate = new Template(); + oldTemplate.setTitle("Title"); + oldTemplate.setBody("
I'm mostly empty "); + oldTemplate = templateAPI.saveTemplate(oldTemplate, host, user, false); + + //Copy Template. + newTemplate = templateAPI.copy(oldTemplate, user); + + //Body should be the same. + Assert.assertEquals(oldTemplate.getBody(), newTemplate.getBody()); + + //Name, identifier, inode and mod_date shouldn't be the same. + Assert.assertNotEquals(oldTemplate.getTitle(), newTemplate.getTitle()); + Assert.assertNotEquals(oldTemplate.getIdentifier(), newTemplate.getIdentifier()); + Assert.assertNotEquals(oldTemplate.getInode(), newTemplate.getInode()); + Assert.assertNotEquals(oldTemplate.getModDate(), newTemplate.getModDate()); + + } finally { + //Clean up. + if (oldTemplate != null) { + templateAPI.delete(oldTemplate, user, false); + } + if (newTemplate != null) { + templateAPI.delete(newTemplate, user, false); + } + } + } } diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateAPIImpl.java b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateAPIImpl.java index 97edbf055856..e8fd7c49dc5b 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateAPIImpl.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateAPIImpl.java @@ -2,7 +2,6 @@ import com.dotcms.business.CloseDBIfOpened; import com.dotcms.business.WrapInTransaction; - import com.dotcms.rendering.velocity.viewtools.DotTemplateTool; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; @@ -30,6 +29,7 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.UtilMethods; import com.dotmarketing.util.WebKeys; +import com.liferay.portal.model.User; import java.util.ArrayList; import java.util.Date; @@ -39,8 +39,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.liferay.portal.model.User; - public class TemplateAPIImpl extends BaseWebAssetAPI implements TemplateAPI { static PermissionAPI permissionAPI = APILocator.getPermissionAPI(); @@ -122,8 +120,6 @@ public Template copy(Template sourceTemplate, Host destination, boolean forceOve newTemplate.setIdentifier(newIdentifier.getInode()); // persists the webasset save(newTemplate); - List