/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.builder; import java.util.List; import java.util.Set; import org.junit.Test; import com.google.common.collect.Lists; import com.enonic.cms.core.content.ContentKey; import com.enonic.cms.core.content.index.UserDefinedField; import com.enonic.cms.core.search.query.SimpleText; /** * Created by IntelliJ IDEA. * User: rmh * Date: 2/2/12 * Time: 10:24 AM */ public class ContentIndexDataCustomDataFactoryBuilderTest extends ContentIndexDataTestBase { private final ContentIndexDataCustomDataFactory customDataBuilder = new ContentIndexDataCustomDataFactory(); @Test public void testNumericValuesOnlyToNumberField() throws Exception { List<UserDefinedField> userDefinedFields = Lists.newArrayList(); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "2" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "3" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "4" ) ) ); final ContentIndexData contentIndexData = new ContentIndexData( new ContentKey( 1 ) ); customDataBuilder.create( contentIndexData, userDefinedFields ); final Set<ContentIndexDataElement> contentDataElements = contentIndexData.getContentIndexDataElements(); verifyElementExistsAndNumberOfValues( contentDataElements, "test.number", 4 ); } @Test public void testBothStringAndNumericValuesToNumberField() throws Exception { List<UserDefinedField> userDefinedFields = Lists.newArrayList(); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test2" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test3" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "4" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "5" ) ) ); final ContentIndexData contentIndexData = new ContentIndexData( new ContentKey( 1 ) ); customDataBuilder.create( contentIndexData, userDefinedFields ); final Set<ContentIndexDataElement> contentDataElements = contentIndexData.getContentIndexDataElements(); verifyElementExistsAndNumberOfValues( contentDataElements, "test", 5 ); verifyElementExistsAndNumberOfValues( contentDataElements, "test.number", 2 ); } @Test public void testOnlyDistinctValues() throws Exception { List<UserDefinedField> userDefinedFields = Lists.newArrayList(); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test2" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test2" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "1" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "2" ) ) ); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "2" ) ) ); final ContentIndexData contentIndexData = new ContentIndexData( new ContentKey( 1 ) ); customDataBuilder.create( contentIndexData, userDefinedFields ); final Set<ContentIndexDataElement> contentDataElements = contentIndexData.getContentIndexDataElements(); verifyElementExistsAndNumberOfValues( contentDataElements, "test", 4 ); verifyElementExistsAndNumberOfValues( contentDataElements, "test.number", 2 ); } @Test public void testSingleValues() throws Exception { List<UserDefinedField> userDefinedFields = Lists.newArrayList(); userDefinedFields.add( new UserDefinedField( "test", new SimpleText( "test" ) ) ); userDefinedFields.add( new UserDefinedField( "test2", new SimpleText( "2" ) ) ); final ContentIndexData contentIndexData = new ContentIndexData( new ContentKey( 1 ) ); customDataBuilder.create( contentIndexData, userDefinedFields ); final Set<ContentIndexDataElement> contentDataElements = contentIndexData.getContentIndexDataElements(); verifyElementExistsAndNumberOfValues( contentDataElements, "test", 1 ); verifyElementDoesNotExist( contentDataElements, "test.number" ); verifyElementDoesNotExist( contentDataElements, "test.date" ); verifyElementExistsAndNumberOfValues( contentDataElements, "test2", 1 ); verifyElementExistsAndNumberOfValues( contentDataElements, "test2.number", 1 ); verifyElementDoesNotExist( contentDataElements, "test5.date" ); } @Test public void testAllUserdataValue() throws Exception { List<UserDefinedField> userDefinedFields = Lists.newArrayList(); userDefinedFields.add( new UserDefinedField( "test1", new SimpleText( "1" ) ) ); userDefinedFields.add( new UserDefinedField( "test2", new SimpleText( "2" ) ) ); userDefinedFields.add( new UserDefinedField( "test3", new SimpleText( "3" ) ) ); userDefinedFields.add( new UserDefinedField( "test4", new SimpleText( "4" ) ) ); final ContentIndexData contentIndexData = new ContentIndexData( new ContentKey( 1 ) ); customDataBuilder.create( contentIndexData, userDefinedFields ); final Set<ContentIndexDataElement> contentDataElements = contentIndexData.getContentIndexDataElements(); verifyElementExistsAndNumberOfValues( contentDataElements, "test1.orderby", 1 ); verifyElementExistsAndNumberOfValues( contentDataElements, "_all_userdata", 4 ); verifyElementDoesNotExist( contentDataElements, "_all_userdata.orderby" ); } }