/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.facet.builder;
import org.elasticsearch.search.facet.terms.TermsFacetBuilder;
import org.junit.Test;
import com.enonic.cms.core.search.facet.AbstractElasticsearchFacetTestBase;
import com.enonic.cms.core.search.facet.FacetQueryException;
import com.enonic.cms.core.search.facet.model.TermsFacetModel;
import static org.junit.Assert.*;
public class ElasticsearchTermsFacetBuilderTest
extends AbstractElasticsearchFacetTestBase
{
ElasticsearchTermsFacetBuilder termsFacetBuilder = new ElasticsearchTermsFacetBuilder();
@Test(expected = FacetQueryException.class)
public void testEmptyModel()
{
TermsFacetModel termFacetModel = new TermsFacetModel();
termsFacetBuilder.build( termFacetModel );
}
@Test
public void testFullModel()
throws Exception
{
String expected = "{\"myFullModel\":" +
"{\"terms\":" +
"{\"fields\":[\"fields1\",\"fields2\"]," +
"\"size\":10," +
"\"exclude\":[\"exclude1\",\"exclude2\"]," +
"\"regex\":\"myRegexp\"," +
"\"regex_flags\":\"CASE_INSENSITIVE|DOTALL|\"," +
"\"order\":\"count\"" +
"}}}";
TermsFacetModel termFacetModel = new TermsFacetModel();
termFacetModel.setName( "myFullModel" );
termFacetModel.setAllTerms( true );
termFacetModel.setExclude( "exclude1, exclude2" );
termFacetModel.setIndexes( "field" );
termFacetModel.setIndexes( "fields1, fields2" );
termFacetModel.setRegex( "myRegexp" );
termFacetModel.setRegexFlags( "CASE_INSENSITIVE, DOTALL" );
termFacetModel.setOrderby( "hits" );
final TermsFacetBuilder build = termsFacetBuilder.build( termFacetModel );
assertEquals( expected, getJson( build ) );
}
@Test
public void testReverseOrdering()
throws Exception
{
String expected = "{\"myFullModel\":{\"terms\":{\"fields\":[\"fields1\",\"fields2\"],\"size\":10,\"order\":\"reverse_count\"}}}";
TermsFacetModel termFacetModel = new TermsFacetModel();
termFacetModel.setName( "myFullModel" );
termFacetModel.setIndexes( "fields1, fields2" );
termFacetModel.setOrderby( "hits ASC" );
final TermsFacetBuilder build = termsFacetBuilder.build( termFacetModel );
assertEquals( expected, getJson( build ) );
}
@Test
public void testDescOrdering()
throws Exception
{
String expected = "{\"myFullModel\":{\"terms\":{\"fields\":[\"fields1\",\"fields2\"],\"size\":10,\"order\":\"count\"}}}";
TermsFacetModel termFacetModel = new TermsFacetModel();
termFacetModel.setName( "myFullModel" );
termFacetModel.setIndexes( "fields1, fields2" );
termFacetModel.setOrderby( "hits DESC" );
final TermsFacetBuilder build = termsFacetBuilder.build( termFacetModel );
assertEquals( expected, getJson( build ) );
}
@Test
public void testFieldNameConverting()
throws Exception
{
String expected = "{\"myModel\":{\"terms\":{\"fields\":[\"data_field\",\"data_person_field\"],\"size\":10}}}";
TermsFacetModel termFacetModel = new TermsFacetModel();
termFacetModel.setName( "myModel" );
termFacetModel.setIndexes( "data/field, data.person.field" );
final TermsFacetBuilder build = termsFacetBuilder.build( termFacetModel );
assertEquals( expected, getJson( build ) );
}
}