/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search; import java.util.Set; import org.elasticsearch.action.index.IndexRequest; import org.junit.Before; import org.junit.Test; import com.enonic.cms.core.content.ContentKey; import com.enonic.cms.core.search.builder.ContentIndexData; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; /** * Created by IntelliJ IDEA. * User: rmh * Date: 11/28/11 * Time: 10:04 AM */ public class ContentIndexRequestCreatorTest { private ContentIndexRequestCreator contentIndexRequestCreator; @Before public void setUp() { contentIndexRequestCreator = new ContentIndexRequestCreator(); } @Test public void testCreateIndexRequests() throws Exception { ContentIndexData data = new ContentIndexData( new ContentKey( "1" ) ); data.addContentIndexDataElement( "contentdata", 1 ); data.addBinaryData( "attachment", "This is a test-representation of binary data" ); Set<IndexRequest> requests = contentIndexRequestCreator.createIndexRequests( "TEST_INDEX", data ); assertEquals( 2, requests.size() ); boolean contentWasFirst = false; boolean binarydataFound = false; String contentId = null; for ( IndexRequest request : requests ) { final String type = request.type(); if ( !contentWasFirst && !type.equals( IndexType.Content.toString() ) ) { fail(); } else if ( type.equals( IndexType.Content.toString() ) ) { contentWasFirst = true; assertTrue( "ContentData should not have parent", request.parent() == null ); contentId = request.id(); } else if ( type.equals( IndexType.Binaries.toString() ) ) { binarydataFound = true; assertTrue( "Binary data should have parent, pointing to content", request.parent() != null ); assertEquals( contentId, request.parent() ); assertEquals( contentId, request.id() ); } } assertTrue( contentWasFirst && binarydataFound ); } @Test public void testOnlyCreateBinaryRequestIfAnyBinaryData() throws Exception { ContentIndexData data = new ContentIndexData( new ContentKey( "1" ) ); data.addContentIndexDataElement( "contentdata", 1 ); Set<IndexRequest> requests = contentIndexRequestCreator.createIndexRequests( "TEST_INDEX", data ); assertEquals( 1, requests.size() ); } }