/*
* 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.QueryFieldAndValue;
import com.enonic.cms.core.search.query.QueryTranslatorTestBase;
public class TermQueryBuilderFactoryTest
extends QueryTranslatorTestBase
{
private final TermQueryBuilderFactory termQueryBuilderFactory = new TermQueryBuilderFactory();
@Test
public void testIdQueries()
{
String expected = "{\n" +
" \"ids\" : {\n" +
" \"type\" : \"content\",\n" +
" \"values\" : [ \"123\" ]\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "key", "123" ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testIdQueriesWithNumber()
{
String expected = "{\n" +
" \"ids\" : {\n" +
" \"type\" : \"content\",\n" +
" \"values\" : [ \"123\" ]\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "key", 123 ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testWildcardQuery()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"_all_userdata\" : \"123\"\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data/*", "123" ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testWildcardQueryWithNumeric()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"_all_userdata.number\" : 123.0\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data/*", 123 ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testWildcardQueryWithDate()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"_all_userdata.date\" : \"2010-08-01T08:00:00.000Z\"\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder =
termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data/*", new DateTime( 2010, 8, 1, 8, 0, DateTimeZone.UTC ) ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testContentdataQueryNumber()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"data_person_age.number\" : 123.0\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data_person_age", 123 ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testContentdataQueryDate()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"data_person_birthdate.date\" : \"2010-08-01T08:00:00.000Z\"\n" +
" }\n" + "}";
DateTime dateTime = new DateTime( 2010, 8, 1, 8, 00, DateTimeZone.UTC );
final QueryBuilder queryBuilder =
termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data_person_birthdate", dateTime ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testContentdataQueryDateAsString()
{
String expected = "{\n" +
" \"term\" : {\n" +
" \"data_person_birthdate\" : \"01:08:10\"\n" +
" }\n" + "}";
DateTime dateTime = new DateTime( 2010, 8, 1, 10, 00 );
final QueryBuilder queryBuilder =
termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "data_person_birthdate", dateTime.toString( "dd:MM:yy" ) ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
@Test
public void testWrapInHasChild()
{
String expected = "{\n" +
" \"has_child\" : {\n" +
" \"query\" : {\n" +
" \"term\" : {\n" +
" \"_all_userdata.number\" : 123.0\n" +
" }\n" +
" },\n" +
" \"child_type\" : \"binaries\"\n" +
" }\n" +
"}";
final QueryBuilder queryBuilder = termQueryBuilderFactory.buildTermQuery( new QueryFieldAndValue( "attachments/*", 123 ) );
compareStringsIgnoreFormatting( expected, queryBuilder.toString() );
}
}