/*
* 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_histogramFacetTest
{
private FacetsModelFactory facetsModelFactory = new FacetsModelFactory();
@Test
public void simple_model()
throws Exception
{
String xml = "<facets>\n" +
" <histogram name=\"myHistogram\">\n" +
" <count>10</count>\n" +
" <index>data/activity</index>\n" +
" <interval>100</interval>\n" +
" </histogram>\n" +
"</facets>";
final FacetsModel facetsModel = facetsModelFactory.buildFromXml( xml );
final FacetModel next = facetsModel.iterator().next();
assertTrue( next instanceof HistogramFacetModel );
HistogramFacetModel histogramFacetModel = (HistogramFacetModel) next;
histogramFacetModel.validate();
assertEquals( "data/activity", histogramFacetModel.getIndex() );
assertEquals( 100L, histogramFacetModel.getInterval() );
assertEquals( new Integer( 10 ), histogramFacetModel.getCount() );
}
@Test
public void missing_interval()
throws Exception
{
String xml = "<facets>\n" +
" <histogram name=\"myHistogram\">\n" +
" <count>10</count>\n" +
" <index>data/activity</index>\n" +
" </histogram>\n" +
"</facets>";
final FacetsModel facetsModel = facetsModelFactory.buildFromXml( xml );
final FacetModel next = facetsModel.iterator().next();
assertTrue( next instanceof HistogramFacetModel );
HistogramFacetModel histogramFacetModel = (HistogramFacetModel) next;
assertExceptionContainingString( histogramFacetModel, "'interval' must be set" );
}
private void assertExceptionContainingString( final HistogramFacetModel histogramFacetModel, final String containsString )
{
boolean exceptionThrowed = false;
try
{
histogramFacetModel.validate();
}
catch ( Exception e )
{
exceptionThrowed = true;
assertTrue( "Message " + e.getMessage(), e.getMessage().contains( containsString ) );
}
assertTrue( exceptionThrowed );
}
}