/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.itest.search; import java.util.Calendar; import java.util.GregorianCalendar; import org.jdom.Document; import org.jdom.Element; import com.enonic.cms.framework.util.JDOMUtil; import com.enonic.cms.core.content.ContentKey; import com.enonic.cms.core.content.category.CategoryKey; import com.enonic.cms.core.content.contenttype.ContentTypeKey; import com.enonic.cms.core.content.resultset.ContentResultSet; import com.enonic.cms.core.search.query.ContentDocument; import com.enonic.cms.core.search.result.FacetResultSetXmlCreator; import static org.junit.Assert.*; public class ContentIndexServiceFacetTestBase extends ContentIndexServiceTestBase { private final FacetResultSetXmlCreator facetResultSetXmlCreator = new FacetResultSetXmlCreator(); protected void createAndCompareResultAsXml( final ContentResultSet result, final String expectedXml ) { Document doc = new Document(); doc.addContent( new Element( "content" ) ); facetResultSetXmlCreator.addFacetResultXml( doc, result.getFacetsResultSet() ); final String resultXml = JDOMUtil.prettyPrintDocument( doc ); final String expectedXmlTrimmed = expectedXml.replace( "\n", "" ).replace( "\r", "" ); final String resultXmlTrimmed = resultXml.replace( "\n", "" ).replace( "\r", "" ); // Trickery to get the nice output of diff if ( !expectedXmlTrimmed.equals( resultXmlTrimmed ) ) { assertEquals( expectedXml, resultXml ); } else { assertEquals( expectedXmlTrimmed, resultXmlTrimmed ); } } protected ContentDocument createAndIndexContent( int contentKey, final String customDataValue, final String fieldName ) { final GregorianCalendar date = new GregorianCalendar( 2008, Calendar.FEBRUARY, 28 ); ContentDocument doc1 = new ContentDocument( new ContentKey( contentKey ) ); setMetadata( date, doc1 ); doc1.setTitle( "Homer" ); doc1.addUserDefinedField( fieldName, customDataValue ); contentIndexService.index( doc1 ); return doc1; } protected ContentDocument createAndIndexContent( int contentKey, String[] values, String[] fields ) { final GregorianCalendar date = new GregorianCalendar( 2008, Calendar.FEBRUARY, 28 ); ContentDocument doc1 = new ContentDocument( new ContentKey( contentKey ) ); setMetadata( date, doc1 ); doc1.setTitle( "Homer" ); for ( int i = 0; i < fields.length; i++ ) { doc1.addUserDefinedField( fields[i], values[i] ); } contentIndexService.index( doc1 ); return doc1; } protected void setMetadata( final GregorianCalendar date, final ContentDocument doc1 ) { doc1.setCategoryKey( new CategoryKey( 9 ) ); doc1.setContentTypeKey( new ContentTypeKey( 32 ) ); doc1.setContentTypeName( "Species" ); // Publish from February 28th to March 28th. doc1.setPublishFrom( date.getTime() ); date.add( Calendar.MONTH, 1 ); doc1.setPublishTo( date.getTime() ); date.add( Calendar.MONTH, -1 ); doc1.setStatus( 2 ); doc1.setPriority( 0 ); doc1.setLanguageCode( "en" ); } }