/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.facet; import java.util.Collection; import java.util.Set; import org.elasticsearch.search.facet.FacetBuilder; import org.elasticsearch.search.facet.terms.TermsFacetBuilder; import org.junit.Test; import com.enonic.cms.core.content.index.ContentIndexQuery; import static org.junit.Assert.*; public class FacetBuilderFactoryTest { FacetBuilderFactory factory = new FacetBuilderFactory(); @Test public void testEmptyFacet() { String facetXml = "<facets/>"; ContentIndexQuery query = new ContentIndexQuery( "" ); query.setFacets( facetXml ); final Collection<FacetBuilder> abstractFacetBuilders = factory.buildFacetBuilder( query ); assertTrue( abstractFacetBuilders.size() == 0 ); } @Test public void testFacets_singleTermsFacet() { String facetXml = "<facets>\n" + " <terms name=\"myFacetName\">\n" + " <count>10</count>\n" + " <indexes>termsFacetField</indexes>\n" + " </terms>\n" + "</facets>"; ContentIndexQuery query = new ContentIndexQuery( "" ); query.setFacets( facetXml ); final Set<FacetBuilder> abstractFacetBuilders = factory.buildFacetBuilder( query ); assertTrue( "Should create one facet", abstractFacetBuilders.size() == 1 ); for ( FacetBuilder builder : abstractFacetBuilders ) { assertTrue( builder instanceof TermsFacetBuilder ); } } @Test public void testFacets_multipleTermsFacet() { String facetXml = "<facets>\n" + " <terms name=\"myFacet1\">\n" + " <count>10</count>\n" + " <indexes>fieldName</indexes>\n" + " </terms>\n" + " <terms name=\"myFacet2\">\n" + " <count>10</count>\n" + " <indexes>fieldName</indexes>\n" + " </terms>\n" + " <terms name=\"myFacet3\">\n" + " <count>10</count>\n" + " <indexes>fieldName</indexes>\n" + " </terms>\n" + "</facets>"; ContentIndexQuery query = new ContentIndexQuery( "" ); query.setFacets( facetXml ); final Set<FacetBuilder> abstractFacetBuilders = factory.buildFacetBuilder( query ); assertTrue( abstractFacetBuilders.size() == 3 ); for ( FacetBuilder builder : abstractFacetBuilders ) { assertTrue( builder instanceof TermsFacetBuilder ); } } }