/* * 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.search.query.ContentDocument; public class ContentIndexServiceImpl_indexDataTypesTest extends ContentIndexServiceTestBase { private ContentDocument createContentDocument( int contentKey ) { ContentDocument doc1 = new ContentDocument( new ContentKey( contentKey ) ); doc1.setCategoryKey( new CategoryKey( 9 ) ); doc1.setContentTypeKey( new ContentTypeKey( 32 ) ); doc1.setTitle( "Family" ); doc1.setContentTypeName( "Adults" ); return doc1; } private void addMetaData( final ContentDocument doc1 ) { final GregorianCalendar date = new GregorianCalendar( 2008, Calendar.FEBRUARY, 28 ); 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.setCreated( date.getTime() ); doc1.setOwnerName( "testuser" ); doc1.setOwnerQualifiedName( "enonic/testuser" ); doc1.setOwnerKey( "1" ); doc1.setModified( date.getTime() ); doc1.setModifierKey( "1" ); doc1.setModifierName( "modifierUser" ); doc1.setModifierQualifiedName( "enonic/modifierUser" ); doc1.setAssignmentDueDate( date.getTime() ); doc1.setAssigneeName( "testuser" ); doc1.setAssigneeQualifiedName( "enonic/testuser" ); doc1.setAssigneeKey( "1" ); doc1.setAssignerName( "testuser" ); doc1.setAssignerQualifiedName( "enonic/testuser" ); doc1.setAssignerKey( "1" ); } private void addUserdefinedData( final ContentDocument doc1 ) { doc1.addUserDefinedField( "data/person/age", "36" ); doc1.addUserDefinedField( "data/person/gender", "male" ); doc1.addUserDefinedField( "data/person/description", "description1" ); doc1.addUserDefinedField( "data/person/birthdate", "1975-05-05" ); doc1.addUserDefinedField( "data/person/samenumber", "1" ); doc1.addUserDefinedField( "data/person/age", "18" ); doc1.addUserDefinedField( "data/person/gender", "female" ); doc1.addUserDefinedField( "data/person/description", "description2" ); doc1.addUserDefinedField( "data/person/birthdate", "1994-06-06" ); doc1.addUserDefinedField( "data/person/samenumber", "1" ); doc1.addUserDefinedField( "data/person/age", "37" ); doc1.addUserDefinedField( "data/person/gender", "male" ); doc1.addUserDefinedField( "data/person/description", "description3" ); doc1.addUserDefinedField( "data/person/birthdate", "1974-06-06" ); doc1.addUserDefinedField( "data/person/samenumber", "1" ); } @Test public void testAllUserFields() { final int contentKey = 1; final ContentDocument contentDocument = createContentDocument( contentKey ); addUserdefinedData( contentDocument ); indexContentDocument( contentDocument ); final Map<String, Object> fieldMapForId = getAllFieldsForId( contentKey ); final int numberOfUniqueUserDataValuesInTestValues = 12; verifyField( "_all_userdata", numberOfUniqueUserDataValuesInTestValues, fieldMapForId ); } private Map<String, Object> getAllFieldsForId( int id ) { final ContentKey contentKey = new ContentKey( id ); return getFieldMapForId( contentKey ); } @Test public void testMetadataFields() { final int contentKey = 1; final ContentDocument contentDocument = createContentDocument( contentKey ); addMetaData( contentDocument ); indexContentDocument( contentDocument ); final Map<String, Object> fieldMapForId = getAllFieldsForId( contentKey ); verifyField( "key", 1, fieldMapForId ); verifyField( "key.number", 1, fieldMapForId ); verifyField( "title", 1, fieldMapForId ); verifyField( "status", 1, fieldMapForId ); verifyField( "status.number", 1, fieldMapForId ); verifyField( "publishfrom", 1, fieldMapForId ); verifyField( "publishfrom.date", 1, fieldMapForId ); verifyField( "publishto", 1, fieldMapForId ); verifyField( "publishto.date", 1, fieldMapForId ); verifyField( "contenttype", 1, fieldMapForId ); verifyField( "contenttypekey", 1, fieldMapForId ); verifyField( "contenttypekey.number", 1, fieldMapForId ); verifyField( "created", 1, fieldMapForId ); verifyField( "created.date", 1, fieldMapForId ); verifyField( "owner_key", 1, fieldMapForId ); verifyField( "owner_name", 1, fieldMapForId ); verifyField( "owner_qualifiedname", 1, fieldMapForId ); verifyField( "modified", 1, fieldMapForId ); verifyField( "modified.date", 1, fieldMapForId ); verifyField( "modifier_key", 1, fieldMapForId ); verifyField( "modifier_name", 1, fieldMapForId ); verifyField( "modifier_qualifiedname", 1, fieldMapForId ); verifyField( "assignmentduedate", 1, fieldMapForId ); verifyField( "assignmentduedate.date", 1, fieldMapForId ); verifyField( "assignee_key", 1, fieldMapForId ); verifyField( "assignee_name", 1, fieldMapForId ); verifyField( "assignee_qualifiedname", 1, fieldMapForId ); verifyField( "assigner_key", 1, fieldMapForId ); verifyField( "assigner_name", 1, fieldMapForId ); verifyField( "assigner_qualifiedname", 1, fieldMapForId ); } private void indexContentDocument( final ContentDocument contentDocument ) { contentIndexService.index( contentDocument ); flushIndex(); } @Test public void testStoreUserdefinedFields() { final int contentKey = 1; final ContentDocument contentDocument = createContentDocument( contentKey ); addUserdefinedData( contentDocument ); indexContentDocument( contentDocument ); final Map<String, Object> fieldMapForId = getAllFieldsForId( contentKey ); verifyField( "data_person_age", 3, fieldMapForId ); verifyField( "data_person_age.number", 3, fieldMapForId ); verifyField( "data_person_samenumber", 1, fieldMapForId ); verifyField( "data_person_samenumber.number", 1, fieldMapForId ); verifyField( "data_person_gender", 2, fieldMapForId ); verifyField( "data_person_gender.number", 0, fieldMapForId ); verifyField( "data_person_description", 3, fieldMapForId ); verifyField( "data_person_description.number", 0, fieldMapForId ); verifyField( "data_person_birthdate", 3, fieldMapForId ); verifyField( "data_person_birthdate.date", 3, fieldMapForId ); } @Test public void testOrderbyFields() { final int contentKey = 1; final ContentDocument contentDocument = createContentDocument( contentKey ); addUserdefinedData( contentDocument ); addMetaData( contentDocument ); indexContentDocument( contentDocument ); final Map<String, Object> fieldMapForId = getAllFieldsForId( contentKey ); verifyField( "data_person_age.orderby", 1, fieldMapForId ); } }