/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.result; import org.jdom.Document; import org.jdom.Element; import org.joda.time.DateTime; import org.junit.Test; public class RangeFacetResultSetXmlCreatorTest extends FacetResultSetTestBase { @Test public void numeric_range_facet() { String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<root>\n" + " <facets>\n" + " <ranges name=\"myRangeFacet\">\n" + " <range hits=\"1\" to=\"10\" min=\"5.0\" mean=\"5.0\" max=\"5.0\" />\n" + " <range hits=\"3\" from=\"10\" to=\"20\" min=\"11.0\" mean=\"14.3\" max=\"19.0\" />\n" + " <range hits=\"5\" from=\"20\" to=\"30\" min=\"21.0\" mean=\"24.5\" max=\"29.2\" />\n" + " <range hits=\"1\" from=\"30\" min=\"122.0\" mean=\"122.0\" max=\"122.0\" />\n" + " </ranges>\n" + " </facets>\n" + "</root>"; FacetResultSetXmlCreator resultSetXmlCreator = new FacetResultSetXmlCreator(); Document doc = new Document( new Element( "root" ) ); FacetsResultSet facetsResultSet = new FacetsResultSet(); RangeFacetResultSet rangeFacetResultSet = new RangeFacetResultSet(); rangeFacetResultSet.setName( "myRangeFacet" ); rangeFacetResultSet.addResult( createResultEntry( null, "10", 1L, new Double( 5 ), new Double( 5 ), new Double( 5 ) ) ); rangeFacetResultSet.addResult( createResultEntry( "10", "20", 3L, new Double( 11 ), new Double( 14.3 ), new Double( 19 ) ) ); rangeFacetResultSet.addResult( createResultEntry( "20", "30", 5L, new Double( 21 ), new Double( 24.5 ), new Double( 29.2 ) ) ); rangeFacetResultSet.addResult( createResultEntry( "30", null, 1L, new Double( 122 ), new Double( 122 ), new Double( 122 ) ) ); facetsResultSet.addFacetResultSet( rangeFacetResultSet ); resultSetXmlCreator.addFacetResultXml( doc, facetsResultSet ); compareIgnoreWhitespacesAndLinebreaks( expected, doc ); } @Test public void date_range_facet() { final String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<root>\n" + " <facets>\n" + " <ranges name=\"myRangeFacet\">\n" + " <range hits=\"1\" to=\"2000-01-02 00:00:00\" />\n" + " <range hits=\"3\" from=\"2001-01-02 01:00:00\" />\n" + " </ranges>\n" + " </facets>\n" + "</root>"; final FacetResultSetXmlCreator resultSetXmlCreator = new FacetResultSetXmlCreator(); final Document doc = new Document( new Element( "root" ) ); final FacetsResultSet facetsResultSet = new FacetsResultSet(); final RangeFacetResultSet rangeFacetResultSet = new RangeFacetResultSet(); final DateTime dateTime1 = new DateTime( 2000, 1, 2, 0, 0 ); final DateTime dateTime2 = new DateTime( 2001, 1, 2, 1, 0 ); rangeFacetResultSet.setName( "myRangeFacet" ); rangeFacetResultSet.addResult( createResultEntry( null, dateTime1.toString(), 1L, null, null, null ) ); rangeFacetResultSet.addResult( createResultEntry( dateTime2.toString(), null, 3L, null, null, null ) ); facetsResultSet.addFacetResultSet( rangeFacetResultSet ); resultSetXmlCreator.addFacetResultXml( doc, facetsResultSet ); compareIgnoreWhitespacesAndLinebreaks( expected, doc ); } private RangeFacetResultEntry createResultEntry( final String from, final String to, final Long count, final Double min, final Double mean, final Double max ) { RangeFacetResultEntry resultEntry = new RangeFacetResultEntry(); resultEntry.setFrom( from ); resultEntry.setTo( to ); resultEntry.setCount( count ); resultEntry.setMin( min ); resultEntry.setMax( max ); resultEntry.setMean( mean ); return resultEntry; } }