/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.query.factory;
import org.elasticsearch.index.query.QueryBuilder;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Test;
import com.enonic.cms.core.search.query.QueryFieldFactory;
import com.enonic.cms.core.search.query.QueryTranslatorTestBase;
import com.enonic.cms.core.search.query.QueryValue;
import static junit.framework.Assert.assertEquals;
public class RangeQueryBuilderFactoryTest
extends QueryTranslatorTestBase
{
private final RangeQueryBuilderFactory rangeQueryBuilderFactory = new RangeQueryBuilderFactory();
@Test
public void testBuildRangeQuery_key_string()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"key\" : {\n" +
" \"from\" : \"100\",\n" +
" \"to\" : null,\n" +
" \"include_lower\" : false,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
QueryBuilder query =
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "key" ), new QueryValue( "100" ), null, false,
true );
// System.out.println( query.toString() );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
@Test
public void testBuildRangeQuery_key_int()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"key.number\" : {\n" +
" \"from\" : 100.0,\n" +
" \"to\" : null,\n" +
" \"include_lower\" : false,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
QueryBuilder query =
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "key" ), new QueryValue( 100 ), null, false,
true );
// System.out.println( query.toString() );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
@Test(expected = java.lang.IllegalArgumentException.class)
public void testBuildRangeQuery_null_range()
{
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "key" ), null, null, false, true );
}
@Test
public void testBuildRangeQuery_key_int_low_include()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"key.number\" : {\n" +
" \"from\" : 100.0,\n" +
" \"to\" : 300.0,\n" +
" \"include_lower\" : true,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
QueryBuilder query = rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "key" ), new QueryValue( 100 ),
new QueryValue( 300 ), true, true );
// System.out.println( query.toString() );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
@Test
public void testBuildRangeQuery_date_low()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"my_date_field.date\" : {\n" +
" \"from\" : \"2012-03-23T14:23:45.678Z\",\n" +
" \"to\" : null,\n" +
" \"include_lower\" : false,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
DateTime initTime = new DateTime( 2012, 3, 23, 15, 23, 45, 678, DateTimeZone.forID( "Europe/Oslo" ) );
QueryBuilder query =
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "my_date_field" ), new QueryValue( initTime ),
null, false, true );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
@Test
public void testBuildRangeQuery_date_low_include()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"my_date_field.date\" : {\n" +
" \"from\" : \"2012-03-23T14:23:45.678Z\",\n" +
" \"to\" : null,\n" +
" \"include_lower\" : true,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
DateTime initTime = new DateTime( 2012, 3, 23, 15, 23, 45, 678, DateTimeZone.forID( "Europe/Oslo" ) );
QueryBuilder query =
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "my_date_field" ), new QueryValue( initTime ),
null, true, true );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
@Test
public void testBuildRangeQuery_date_low_high()
{
String expected_result = "{\n" +
" \"range\" : {\n" +
" \"my_date_field.date\" : {\n" +
" \"from\" : \"2012-03-23T14:23:45.678Z\",\n" +
" \"to\" : \"2012-03-24T04:01:23.456Z\",\n" +
" \"include_lower\" : false,\n" +
" \"include_upper\" : true\n" +
" }\n" +
" }\n" +
"}";
DateTime initTime = new DateTime( 2012, 3, 23, 15, 23, 45, 678, DateTimeZone.forID( "Europe/Oslo" ) );
DateTime endTime = new DateTime( 2012, 3, 24, 5, 1, 23, 456, DateTimeZone.forID( "Europe/Oslo" ) );
QueryBuilder query =
rangeQueryBuilderFactory.buildRangeQuery( QueryFieldFactory.resolveQueryField( "my_date_field" ), new QueryValue( initTime ),
new QueryValue( endTime ), false, true );
assertEquals( expected_result.replace( "\r", "" ), query.toString().replace( "\r", "" ) );
}
}