/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.query;
import java.util.HashSet;
import java.util.Set;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.Test;
import com.enonic.cms.core.content.index.ContentIndexQuery;
import com.enonic.cms.core.structure.menuitem.MenuItemEntity;
import com.enonic.cms.core.structure.menuitem.MenuItemKey;
/**
* Created by IntelliJ IDEA.
* User: rmh
* Date: 2/2/12
* Time: 2:54 PM
*/
public class QueryTranslator_filterSectionTest
extends QueryTranslatorTestBase
{
@Test
public void testFilterQuery_section_filter_default_status()
throws Exception
{
String expected_search_result = "{\n" +
" \"from\" : 0,\n" +
" \"size\" : 1000,\n" +
" \"query\" : {\n" +
" \"filtered\" : {\n" +
" \"query\" : {\n" +
" \"match_all\" : { }\n" +
" },\n" +
" \"filter\" : {\n" +
" \"bool\" : {\n" +
" \"should\" : [ {\n" +
" \"terms\" : {\n" +
" \"contentlocations_approved\" : [ \"3\", \"2\", \"1\" ]\n" +
" }\n" +
" }, {\n" +
" \"terms\" : {\n" +
" \"contentlocations_unapproved\" : [ \"3\", \"2\", \"1\" ]\n" +
" }\n" +
" } ]\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
Set<MenuItemEntity> sectionFilter = new HashSet<MenuItemEntity>();
MenuItemEntity entity1 = new MenuItemEntity();
entity1.setKey( new MenuItemKey( 1 ) );
sectionFilter.add( entity1 );
MenuItemEntity entity2 = new MenuItemEntity();
entity2.setKey( new MenuItemKey( 2 ) );
sectionFilter.add( entity2 );
MenuItemEntity entity3 = new MenuItemEntity();
entity3.setKey( new MenuItemKey( 3 ) );
sectionFilter.add( entity3 );
ContentIndexQuery query = createContentQuery( sectionFilter );
SearchSourceBuilder builder = getQueryTranslator().build( query );
compareStringsIgnoreFormatting( expected_search_result, builder.toString() );
}
@Test
public void testFilterQuery_section_filter_unapproved_only()
throws Exception
{
String expected_search_result = "{\n" +
" \"from\" : 0,\n" +
" \"size\" : " + ContentIndexQuery.DEFAULT_COUNT + ",\n" +
" \"query\" : {\n" +
" \"filtered\" : {\n" +
" \"query\" : {\n" +
" \"match_all\" : { }\n" +
" },\n" +
" \"filter\" : {\n" +
" \"terms\" : {\n" +
" \"contentlocations_unapproved\" : [ \"3\", \"2\", \"1\" ]\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
Set<MenuItemEntity> sectionFilter = new HashSet<MenuItemEntity>();
MenuItemEntity entity1 = new MenuItemEntity();
entity1.setKey( new MenuItemKey( 1 ) );
sectionFilter.add( entity1 );
MenuItemEntity entity2 = new MenuItemEntity();
entity2.setKey( new MenuItemKey( 2 ) );
sectionFilter.add( entity2 );
MenuItemEntity entity3 = new MenuItemEntity();
entity3.setKey( new MenuItemKey( 3 ) );
sectionFilter.add( entity3 );
ContentIndexQuery query = createContentQuery( "" );
query.setSectionFilter( sectionFilter, ContentIndexQuery.SectionFilterStatus.UNAPPROVED_ONLY );
SearchSourceBuilder builder = getQueryTranslator().build( query );
compareStringsIgnoreFormatting( expected_search_result, builder.toString() );
}
@Test
public void testFilterQuery_section_filter_approved_only()
throws Exception
{
String expected_search_result = "{\n" +
" \"from\" : 0,\n" +
" \"size\" : " + ContentIndexQuery.DEFAULT_COUNT + ",\n" +
" \"query\" : {\n" +
" \"filtered\" : {\n" +
" \"query\" : {\n" +
" \"match_all\" : { }\n" +
" },\n" +
" \"filter\" : {\n" +
" \"terms\" : {\n" +
" \"contentlocations_approved\" : [ \"3\", \"2\", \"1\" ]\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
Set<MenuItemEntity> sectionFilter = new HashSet<MenuItemEntity>();
MenuItemEntity entity1 = new MenuItemEntity();
entity1.setKey( new MenuItemKey( 1 ) );
sectionFilter.add( entity1 );
MenuItemEntity entity2 = new MenuItemEntity();
entity2.setKey( new MenuItemKey( 2 ) );
sectionFilter.add( entity2 );
MenuItemEntity entity3 = new MenuItemEntity();
entity3.setKey( new MenuItemKey( 3 ) );
sectionFilter.add( entity3 );
ContentIndexQuery query = createContentQuery( "" );
query.setSectionFilter( sectionFilter, ContentIndexQuery.SectionFilterStatus.APPROVED_ONLY );
SearchSourceBuilder builder = getQueryTranslator().build( query );
compareStringsIgnoreFormatting( expected_search_result, builder.toString() );
}
}