/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.structure; import java.io.IOException; import java.util.LinkedHashSet; import java.util.Set; import org.jdom.JDOMException; import com.enonic.cms.framework.xml.XMLDocument; import com.enonic.cms.framework.xml.XMLDocumentFactory; import com.enonic.cms.core.content.contenttype.ContentTypeEntity; import com.enonic.cms.core.structure.menuitem.MenuItemEntity; import com.enonic.cms.core.structure.menuitem.MenuItemType; import com.enonic.cms.core.structure.menuitem.MenuItemXMLCreatorSetting; import com.enonic.cms.core.structure.menuitem.MenuItemXmlCreator; import com.enonic.cms.core.structure.page.PageEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; import com.enonic.cms.core.structure.page.template.PageTemplateType; public class MenuItemXmlCreatorTest extends AbstractSiteXmlCreatorTest { private MenuItemXMLCreatorSetting setting; private MenuItemXmlCreator xmlCreator; SiteEntity site_1; protected void setUp() throws Exception { super.setUp(); site_1 = new SiteEntity(); site_1.setKey( 1 ); site_1.setLanguage( null ); } public void testCreateLegacyGetMenuItemWithParentsWhenWanted1() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-label-result-2.xml" ); MenuItemEntity mi1 = createMenuItem( "1", "1", null, site_1 ); MenuItemEntity mi11 = createMenuItem( "2", "1.1", mi1, site_1 ); MenuItemEntity mi111 = createMenuItem( "3", "1.1.1", mi11, site_1 ); mi1.setType( MenuItemType.LABEL ); mi11.setType( MenuItemType.LABEL ); mi111.setType( MenuItemType.LABEL ); mi1.setMenuName( "1" ); mi11.setMenuName( "1.1" ); mi111.setMenuName( "1.1.1" ); mi1.setDisplayName( "1" ); mi11.setDisplayName( "1.1" ); mi111.setDisplayName( "1.1.1" ); setting = new MenuItemXMLCreatorSetting(); setting.includeParents = true; xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi111 ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemWithParentsWhenWanted2() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-label-result-4.xml" ); MenuItemEntity mi1 = createMenuItem( "1", "1", null, site_1 ); mi1.setType( MenuItemType.LABEL ); mi1.setMenuName( "1" ); mi1.setDisplayName( "1" ); setting = new MenuItemXMLCreatorSetting(); setting.includeParents = true; xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi1 ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemWithoutParentsWhenNotWanted() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-label-result-3.xml" ); MenuItemEntity mi1 = createMenuItem( "1", "1", null, site_1 ); MenuItemEntity mi11 = createMenuItem( "2", "1.1", mi1, site_1 ); MenuItemEntity mi111 = createMenuItem( "3", "1.1.1", mi11, site_1 ); mi1.setType( MenuItemType.LABEL ); mi11.setType( MenuItemType.LABEL ); mi111.setType( MenuItemType.LABEL ); mi1.setMenuName( "1" ); mi11.setMenuName( "1.1" ); mi111.setMenuName( "1.1.1" ); mi1.setDisplayName( "1" ); mi11.setDisplayName( "1.1" ); mi111.setDisplayName( "1.1.1" ); setting = new MenuItemXMLCreatorSetting(); setting.includeParents = false; xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi111 ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemUrl() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-url-result-1.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setUrl( "www.vg.no" ); mi.setOpenNewWindowForURL( true ); mi.setType( MenuItemType.URL ); mi.setMenuName( "one" ); mi.setDisplayName( "one" ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemLabel() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-label-result-1.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setType( MenuItemType.LABEL ); mi.setDisplayName( "one" ); mi.setMenuName( "one" ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemShortcut() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-shortcut-result-1.xml" ); MenuItemEntity shortcutMenuItem = createMenuItem( "1", "one", null, site_1 ); MenuItemEntity toMenuItem = createMenuItem( "2", "two", null, site_1 ); createMenuItemShortcut( shortcutMenuItem, toMenuItem, true ); shortcutMenuItem.setType( MenuItemType.SHORTCUT ); shortcutMenuItem.setDisplayName( "one" ); shortcutMenuItem.setMenuName( "one" ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( shortcutMenuItem ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemBuiltInContent() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-content-result-1.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setType( MenuItemType.CONTENT ); mi.setMenuName( "one" ); mi.setDisplayName( "one" ); String xmlDataString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<data cachedisabled=\"false\" cachetype=\"default\">" + "<parameters><parameter name=\"key\" override=\"false\">1366</parameter></parameters>" + "<document>built in content</document></data>"; mi.setXmlData( XMLDocumentFactory.create( xmlDataString ).getAsJDOMDocument() ); mi.setSection( true ); Set<ContentTypeEntity> filteredContentTypes = new LinkedHashSet<ContentTypeEntity>(); filteredContentTypes.add( createContentType( "201", "type1" ) ); filteredContentTypes.add( createContentType( "202", "type2" ) ); mi.setAllowedSectionContentTypes( filteredContentTypes ); PageEntity page = createPage( "201" ); PageTemplateEntity pageTemplate = createPageTemplate( "301", "name-301" ); pageTemplate.setType( PageTemplateType.CONTENT ); page.setTemplate( pageTemplate ); mi.setPage( page ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemReferencedContent() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-content-result-2.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setType( MenuItemType.CONTENT ); mi.setMenuName( "one" ); mi.setDisplayName( "one" ); String xmlDataString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<data cachedisabled=\"false\" cachetype=\"default\">" + "<document/></data>"; mi.setXmlData( XMLDocumentFactory.create( xmlDataString ).getAsJDOMDocument() ); mi.setContent( createContent( "1001" ) ); PageEntity page = createPage( "201" ); PageTemplateEntity pageTemplate = createPageTemplate( "301", "name-301" ); pageTemplate.setType( PageTemplateType.CONTENT ); page.setTemplate( pageTemplate ); mi.setPage( page ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemSection() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-section-result-1.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setType( MenuItemType.SECTION ); mi.setMenuName( "one" ); mi.setDisplayName( "one " ); mi.setSection( true ); Set<ContentTypeEntity> filteredContentTypes = new LinkedHashSet<ContentTypeEntity>(); filteredContentTypes.add( createContentType( "201", "type1" ) ); filteredContentTypes.add( createContentType( "202", "type2" ) ); mi.setAllowedSectionContentTypes( filteredContentTypes ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemPage() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-page-result-1.xml" ); MenuItemEntity mi = createMenuItem( "1", "one", null, site_1 ); mi.setType( MenuItemType.PAGE ); mi.setDisplayName( "one" ); mi.setMenuName( "one" ); PageEntity page = createPage( "201" ); PageTemplateEntity pageTemplate = createPageTemplate( "301", "name-301" ); pageTemplate.setType( PageTemplateType.CONTENT ); page.setTemplate( pageTemplate ); mi.setPage( page ); setting = new MenuItemXMLCreatorSetting(); xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } public void testCreateLegacyGetMenuItemIncludeHidden() throws JDOMException, IOException { String expectedXml = getXml( "/com/enonic/cms/core/structure/MenuItemXmlCreatorTest-label-hidden-item.xml" ); MenuItemEntity mi1 = createMenuItem( "1", "1", null, site_1 ); MenuItemEntity mi11 = createMenuItem( "2", "1.1", mi1, site_1 ); MenuItemEntity mi111 = createMenuItem( "3", "1.1.1", mi11, site_1 ); mi1.setType( MenuItemType.LABEL ); mi11.setType( MenuItemType.LABEL ); mi111.setType( MenuItemType.LABEL ); mi1.setMenuName( "1" ); mi11.setMenuName( "1.1" ); mi111.setMenuName( "1.1.1" ); mi1.setDisplayName( "1" ); mi11.setDisplayName( "1.1" ); mi111.setDisplayName( "1.1.1" ); mi111.setHidden( true ); setting = new MenuItemXMLCreatorSetting(); setting.includeParents = true; xmlCreator = new MenuItemXmlCreator( setting, menuItemAccessResolver ); XMLDocument xmlDoc = xmlCreator.createLegacyGetMenuItem( mi111 ); assertEquals( expectedXml, getFormattedXmlString( xmlDoc ) ); } }