/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.facet.model;
import org.junit.Test;
import static org.junit.Assert.*;
public class FacetModelFactoryTest_termsFacetTest
{
private FacetsModelFactory facetsModelFactory = new FacetsModelFactory();
@Test
public void simple_model()
throws Exception
{
String xml = "<facets>\n" +
" <terms name=\"myFacetName\">\n" +
" <count>10</count>\n" +
" <all-terms>true</all-terms>\n" +
" <indexes>data/activity, data/something</indexes>\n" +
" <orderby>hits</orderby>\n" +
" </terms>\n" +
"</facets>";
final FacetsModel facetsModel = facetsModelFactory.buildFromXml( xml );
final FacetModel next = facetsModel.iterator().next();
assertTrue( next instanceof TermsFacetModel );
TermsFacetModel termsFacetModel = (TermsFacetModel) next;
assertTrue( termsFacetModel.getAllTerms() );
assertEquals( "data/activity, data/something", termsFacetModel.getIndexes() );
assertEquals( "hits", termsFacetModel.getOrderby() );
}
@Test
public void missing_field()
throws Exception
{
String xml = "<facets>\n" +
" <terms name=\"myFacetName\">\n" +
" <count>10</count>\n" +
" <all-terms>true</all-terms>\n" +
" <orderby>hits</orderby>\n" +
" </terms>\n" +
"</facets>";
final FacetsModel facetsModel = facetsModelFactory.buildFromXml( xml );
final FacetModel next = facetsModel.iterator().next();
assertTrue( next instanceof TermsFacetModel );
TermsFacetModel termsFacetModel = (TermsFacetModel) next;
boolean exceptionThrown = false;
try
{
termsFacetModel.validate();
}
catch ( Exception e )
{
assertTrue( e.getMessage(), e.getMessage().contains( "'indexes' must be set" ) );
exceptionThrown = true;
}
assertTrue( exceptionThrown );
}
@Test
public void unsupported_orderby()
throws Exception
{
String xml = "<facets>\n" +
" <terms name=\"myFacetName\">\n" +
" <count>10</count>\n" +
" <all-terms>true</all-terms>\n" +
" <indexes>data/activity, data/something</indexes>\n" +
" <orderby>max</orderby>\n" +
" </terms>\n" +
"</facets>";
final FacetsModel facetsModel = facetsModelFactory.buildFromXml( xml );
final FacetModel next = facetsModel.iterator().next();
assertTrue( next instanceof TermsFacetModel );
TermsFacetModel termsFacetModel = (TermsFacetModel) next;
boolean exceptionThrown = false;
try
{
termsFacetModel.validate();
}
catch ( Exception e )
{
assertTrue( e.getMessage(), e.getMessage().contains( "Unsupported orderby-value" ) );
exceptionThrown = true;
}
assertTrue( exceptionThrown );
}
}