/* * 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 java.util.Map; import org.junit.Test; 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.index.ContentIndexQuery; import com.enonic.cms.core.search.query.ContentDocument; import static junit.framework.Assert.assertNotNull; public class ContentIndexServiceImpl_indexAllUserdataFieldTest extends ContentIndexServiceTestBase { @Test public void testBuildsCorrectAllUserDataFields() { indexUserDataWithMultipleValuesDocument(); final Map<String, Object> fieldMapForId = getFieldMapForId( new ContentKey( 1322 ) ); final Object all_userdata = fieldMapForId.get( "_all_userdata" ); assertNotNull( all_userdata ); verifyField( "_all_userdata", 4, fieldMapForId ); } @Test public void testDataStarQueryWithNumericStringValue() { indexUserDataWithMultipleValuesDocument(); assertContentResultSetEquals( new int[]{1322}, contentIndexService.query( new ContentIndexQuery( "data/* = '11' " ) ) ); } @Test public void testDataStarQueryWithNumericValue() { indexUserDataWithMultipleValuesDocument(); printAllIndexContent(); assertContentResultSetEquals( new int[]{1322}, contentIndexService.query( new ContentIndexQuery( "data/* = 10 " ) ) ); assertContentResultSetEquals( new int[]{1322}, contentIndexService.query( new ContentIndexQuery( "data/* = 11 " ) ) ); } private void indexUserDataWithMultipleValuesDocument() { final GregorianCalendar date = new GregorianCalendar( 2008, Calendar.FEBRUARY, 28 ); ContentDocument doc1 = new ContentDocument( new ContentKey( 1322 ) ); doc1.setCategoryKey( new CategoryKey( 9 ) ); doc1.setContentTypeKey( new ContentTypeKey( 32 ) ); doc1.setContentTypeName( "Adults" ); doc1.setTitle( "Homer" ); doc1.addUserDefinedField( "data/test/number", "10" ); doc1.addUserDefinedField( "data/test/number", "11" ); doc1.addUserDefinedField( "data/test/number2", "10" ); doc1.addUserDefinedField( "data/test/number2", "11" ); doc1.addUserDefinedField( "data/test/value", "ten" ); doc1.addUserDefinedField( "data/test/value", "eleven" ); doc1.setPublishFrom( date.getTime() ); date.add( Calendar.MONTH, 1 ); doc1.setPublishTo( date.getTime() ); date.add( Calendar.MONTH, -1 ); doc1.setStatus( 2 ); doc1.setPriority( 0 ); contentIndexService.index( doc1 ); ContentDocument doc2 = new ContentDocument( new ContentKey( 1323 ) ); doc2.setCategoryKey( new CategoryKey( 9 ) ); doc2.setContentTypeKey( new ContentTypeKey( 32 ) ); doc2.setContentTypeName( "Adults" ); doc2.setTitle( "Homer" ); doc1.addUserDefinedField( "data/test/number", "11" ); doc1.addUserDefinedField( "data/test/number", "12" ); doc1.addUserDefinedField( "data/test/number2", "11" ); doc1.addUserDefinedField( "data/test/number2", "12" ); doc1.addUserDefinedField( "data/test/value", "eleven" ); doc1.addUserDefinedField( "data/test/value", "twelve" ); doc2.setPublishFrom( date.getTime() ); date.add( Calendar.MONTH, 1 ); doc2.setPublishTo( date.getTime() ); date.add( Calendar.MONTH, -1 ); doc2.setStatus( 2 ); doc2.setPriority( 0 ); contentIndexService.index( doc2 ); flushIndex(); } }