/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.itest.client; import org.jdom.Document; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import com.enonic.cms.framework.xml.XMLDocumentFactory; import com.enonic.cms.api.client.model.GetContentTypeConfigXMLParams; import com.enonic.cms.core.client.InternalClient; import com.enonic.cms.core.content.contenttype.ContentHandlerName; import com.enonic.cms.itest.AbstractSpringTest; import com.enonic.cms.itest.util.DomainFactory; import com.enonic.cms.itest.util.DomainFixture; import static com.enonic.cms.itest.util.AssertTool.assertSingleXPathValueEquals; import static com.enonic.cms.itest.util.AssertTool.assertXPathEquals; import static com.enonic.cms.itest.util.AssertTool.assertXPathExist; import static com.enonic.cms.itest.util.AssertTool.assertXPathNotExist; public class InternalClientImpl_getContentTypeXmlTest extends AbstractSpringTest { @Autowired private DomainFixture fixture; @Autowired @Qualifier("localClient") private InternalClient internalClient; @Before public void setUp() { final DomainFactory factory = fixture.getFactory(); // setup fixture.initSystemData(); fixture.save( factory.createContentHandler( "Custom content", ContentHandlerName.CUSTOM.getHandlerClassShortName() ) ); fixture.save( factory.createContentType( 1002, "document", ContentHandlerName.CUSTOM.getHandlerClassShortName(), getDocumentContentTypeXml() ) ); } @Test public void getContentTypeConfigXMLByKey() { GetContentTypeConfigXMLParams params = new GetContentTypeConfigXMLParams(); params.key = 1002; Document documentContentType = internalClient.getContentTypeConfigXML( params ); assertXPathEquals( "/contenttype/config/form/title/@name", documentContentType, "heading" ); assertXPathExist( "/contenttype/config/form/block/input", documentContentType ); assertXPathExist( "/contenttype/config/form/block/@name", documentContentType ); assertXPathNotExist( "/contenttype/config/form/block2/input", documentContentType ); assertXPathEquals( "/contenttype/config/form/block[1]/input[1]/@name", documentContentType, "heading" ); assertXPathEquals( "/contenttype/config/form/block[1]/input[2]/@name", documentContentType, "text" ); assertXPathEquals( "/contenttype/config/form/block[2]/input[1]/@name", documentContentType, "meta-keywords" ); assertXPathEquals( "/contenttype/config/form/block[2]/input[2]/@name", documentContentType, "meta-description" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/display", documentContentType, "Meta keywords" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/xpath", documentContentType, "contentdata/meta-keywords" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/help", documentContentType, "Comma separated" ); } @Test public void getContentTypeConfigXMLByName() { GetContentTypeConfigXMLParams params = new GetContentTypeConfigXMLParams(); params.name = "document"; Document documentContentType = internalClient.getContentTypeConfigXML( params ); assertXPathEquals( "/contenttype/config/form/title/@name", documentContentType, "heading" ); assertXPathExist( "/contenttype/config/form/block/input", documentContentType ); assertXPathExist( "/contenttype/config/form/block/@name", documentContentType ); assertXPathNotExist( "/contenttype/config/form/block2/input", documentContentType ); assertXPathEquals( "/contenttype/config/form/block[1]/input[1]/@name", documentContentType, "heading" ); assertXPathEquals( "/contenttype/config/form/block[1]/input[2]/@name", documentContentType, "text" ); assertXPathEquals( "/contenttype/config/form/block[2]/input[1]/@name", documentContentType, "meta-keywords" ); assertXPathEquals( "/contenttype/config/form/block[2]/input[2]/@name", documentContentType, "meta-description" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/display", documentContentType, "Meta keywords" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/xpath", documentContentType, "contentdata/meta-keywords" ); assertSingleXPathValueEquals( "/contenttype/config/form/block[2]/input[1]/help", documentContentType, "Comma separated" ); } private Document getDocumentContentTypeXml() { final StringBuilder config = new StringBuilder(); config.append( "<contenttype>" ); config.append( " <config>" ); config.append( " <form>" ); config.append( " <title name=\"heading\"/>" ); config.append( " <block name=\"Document\">" ); config.append( " <input name=\"heading\" required=\"true\" type=\"text\">" ); config.append( " <display>Heading</display>" ); config.append( " <xpath>contentdata/heading</xpath>" ); config.append( " </input>" ); config.append( " <input config=\"document\" mode=\"xhtml\" name=\"text\" type=\"htmlarea\">" ); config.append( " <display>Text</display>" ); config.append( " <xpath>contentdata/text</xpath>" ); config.append( " </input>" ); config.append( " </block>" ); config.append( " <block name=\"Meta information\">" ); config.append( " <input name=\"meta-keywords\" type=\"text\">" ); config.append( " <display>Meta keywords</display>" ); config.append( " <xpath>contentdata/meta-keywords</xpath>" ); config.append( " <help>Comma separated</help>" ); config.append( " </input>" ); config.append( " <input name=\"meta-description\" type=\"textarea\">" ); config.append( " <display>Meta description</display>" ); config.append( " <xpath>contentdata/meta-description</xpath>" ); config.append( " </input>" ); config.append( " </block>" ); config.append( " </form>" ); config.append( " </config>" ); config.append( "</contenttype>" ); return XMLDocumentFactory.create( config.toString() ).getAsJDOMDocument(); } }