@Test
public void verifyPlanQueryReturnsNonPersistedQueryWithCriterion2()
    throws Exception
{

    // Create schema with attributes
    final Attribute attribute = new Attribute();
    final Map<String, Property> propertyMap = new HashMap<>();
    addProperty( propertyMap, attribute, "id", true );
    addProperty( propertyMap, attribute, "uid", true );
    addProperty( propertyMap, attribute, "name", true );
    Schema schema = new OrganisationUnitSchemaDescriptor().getSchema();
    schema.setPropertyMap( propertyMap );
    // Add restrictions on a non persisted field
    Query query = Query.from( schema, Junction.Type.AND );
    query.setMaxResults( 10 );
    query.setFirstResult( 500 );
    query.add( Restrictions.eq( "name", "test" ) );
    query.add( Restrictions.eq( "id", 100 ) );
    // method under test
    QueryPlan queryPlan = subject.planQuery( query, false );
    Query persistedQuery = queryPlan.getPersistedQuery();
    assertTrue( persistedQuery.isPlannedQuery() );
    assertEquals( persistedQuery.getCriterions().size(), 2 );
    assertEquals( persistedQuery.getFirstResult().intValue(), 500 );
    assertEquals( persistedQuery.getMaxResults().intValue(), 10 );
    assertEquals( persistedQuery.getRootJunctionType(), Junction.Type.AND );
    Query nonPersistedQuery = queryPlan.getNonPersistedQuery();
    assertEquals( nonPersistedQuery.getCriterions().size(), 0 );
    assertTrue( nonPersistedQuery.isPlannedQuery() );
    assertEquals( nonPersistedQuery.getRootJunctionType(), Junction.Type.AND );
}