blob: a87a6bea2a690ef6e531fff264914793d089755d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.usergrid.query.validator.users;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.usergrid.persistence.Entity;
import org.apache.usergrid.query.validator.AbstractQueryIT;
import org.apache.usergrid.query.validator.QueryRequest;
import org.apache.usergrid.query.validator.QueryResponse;
import org.apache.usergrid.query.validator.QueryResultsMatcher;
import org.apache.usergrid.utils.StringUtils;
import java.util.List;
/**
* @author Sungju Jin
*/
public class UserQueryIT extends AbstractQueryIT {
@BeforeClass
public static void setDatas() {
createInitializationDatas("user");
}
@Test
public void sexEqualAndNameEqual() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and name = 'judekim' LIMIT 10";
String api = "SELECT * WHERE sex = 'male' AND name = 'judekim'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameEqualAndSexEqual() {
String sqlite = "SELECT * FROM users WHERE name = 'judekim' and sex = 'male' LIMIT 10";
String api = "select * where name = 'judekim' and sex = 'male'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameEqualAndSexEqual_limitL20() {
String sqlite = "SELECT * FROM users WHERE name = 'judekim' and sex = 'male' LIMIT 20";
String api = "select * where name = 'judekim' and sex = 'male'";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndNameEqualExtra1() {
String sqlite = "SELECT * FROM users WHERE sex = 'female' and name = 'curioe' LIMIT 10";
String api = "select * where sex = 'female' and name = 'curioe'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualOrNameEqual() {
String sqlite = "SELECT * FROM users WHERE sex = 'female' or name = 'curioe' LIMIT 10";
String api = "select * where sex = 'female' or name = 'curioe'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc() {
String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 10";
String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortAddressAscNameDesc() {
String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY address asc, name desc LIMIT 4";
String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by address asc, name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(4);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortAddressAscNameDesc_limitL4() {
String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY address asc, name desc LIMIT 4";
String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by address asc, name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(4);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqual_sortAgeDescExtra1() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' ORDER BY age desc LIMIT 10";
String api = "select * where sex = 'male' order by age desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String sex = (String)entity.getProperty("sex");
if((StringUtils.equals("male",sex)) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqual_sortAgeDescExtra2() {
String sqlite = " SELECT * FROM users WHERE sex = 'female' ORDER BY age desc LIMIT 10";
String api = "select * where sex = 'female' order by age desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequal() {
String sqlite = " SELECT * FROM users WHERE sex = 'male' and age >= 35 LIMIT 10";
String api = "select * where sex = 'male' and age >= 35";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequal_sortAgeDesc() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY age desc LIMIT 10";
String api = "select * where sex = 'male' and age >= 35 order by age desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequal_sortNameDesc() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY name desc LIMIT 10";
String api = "select * where sex = 'male' and age >= 35 order by name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequal_sortAgeDesc_limitL20() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY age desc LIMIT 20";
String api = "select * where sex = 'male' and age >= 35 order by age desc";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlSexEqualAndAgeGreaterthanequal_sortNameDesc_limitL20() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY name desc LIMIT 20";
String api = "select * where sex = 'male' and age >= 35 order by name desc";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequalOrSexEqual() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' LIMIT 10";
String api = "select * where sex = 'male' and age >= 35 or sex = 'female'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
String sex = (String)entity.getProperty("sex");
if(((StringUtils.equals("male",sex) && age >= 35) || StringUtils.equals("female",sex)) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortAgeDesc() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY age desc LIMIT 10";
String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by age desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void limitL12() {
String sqlite = "SELECT * FROM users LIMIT 12";
String api = null;
int limit = 12;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 10";
String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc_limitL20() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 20";
String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by name desc";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void limitL11() {
String sqlite = "SELECT * FROM users LIMIT 11";
String api = null;
int limit = 11;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual() {
String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 20 or sex = 'female' LIMIT 10";
String api = "select * where name = 'a*' and sex = 'male' and age >= 20 or sex = 'female'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_limitL20() {
String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 20 or sex = 'female' LIMIT 20";
String api = "select * where name = 'a*' and sex = 'male' and age >= 20 or sex = 'female'";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sexEqualAndAgeGreaterthanequal_sortAddressDesc_limitL100() {
String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY address desc LIMIT 100";
String api = "select * where sex = 'male' and age >= 35 order by address desc";
int limit = 100;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlNameEqual() {
String sqlite = "SELECT * FROM users WHERE name = 'judekim' LIMIT 10";
String api = "select * where name = 'judekim'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeEqual() {
String sqlite = "SELECT * FROM users WHERE age = 16 LIMIT 10";
String api = "select * where age = 16";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlNameEqualAndAgeEqual() {
String sqlite = "SELECT * FROM users WHERE name = 'askagirl' and age = 16 LIMIT 10";
String api = "select * where name = 'askagirl' and age = 16";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String name = entity.getName();
int age = (Integer)entity.getProperty("age");
if ((StringUtils.equals("askagirl", name) && age == 16) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeLessthan() {
String sqlite = "SELECT * FROM users WHERE age < 16 LIMIT 10";
String api = "select * where age < 16";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
if((age < 16) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeLessthanequal() {
String sqlite = "SELECT * FROM users WHERE age <= 16 LIMIT 20";
String api = "select * where age <= 16";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
if((age <= 16) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeGreaterthan() {
String sqlite = "SELECT * FROM users WHERE age > 16 LIMIT 10";
String api = "select * where age > 16";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
if((age > 16) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeGreaterthanequal() {
String sqlite = "SELECT * FROM users WHERE age >= 16 LIMIT 10";
String api = "select * where age >= 16";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
if((age >= 16) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeGreaterthanequalAndAgeLessthan() {
String sqlite = "SELECT * FROM users WHERE age >= 32 and age < 40 LIMIT 10";
String api = "select * where age >= 32 and age < 40";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
if((age >= 32 && age < 40) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAgeGreaterthanequalAndAgeLessthanAndSexEqual() {
String sqlite = "SELECT * FROM users WHERE age >= 32 and age < 40 and sex = 'female' LIMIT 10";
String api = "select * where age >= 32 and age < 40 and sex = 'female'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
String sex = (String)entity.getProperty("sex");
if((age >= 32 && age < 40 && StringUtils.equals("female",sex)) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAddressFulltext() {
String sqlite = "SELECT * FROM users WHERE address LIKE '%서울시%' LIMIT 10";
String api = "select * where address contains '서울시'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String address = (String)entity.getProperty("address");
if((StringUtils.contains(address,"서울시")) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAddressFulltextstartswith() {
String sqlite = " SELECT * FROM users WHERE address LIKE 'A%' LIMIT 10";
String api = "select * where address contains 'A*'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String address = (String)entity.getProperty("address");
if((StringUtils.startsWith(address,"A")) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAddressBeginswith() {
String sqlite = "SELECT * FROM users WHERE address LIKE 'B%' LIMIT 10";
String api = "select * where address = 'B*'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String address = (String)entity.getProperty("address");
if((StringUtils.startsWith(address,"B")) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAddressBeginswithAndSexFulltextstartswith() {
String sqlite = "SELECT * FROM users WHERE address LIKE 'C%' and sex LIKE 'ma%' LIMIT 10";
String api = "select * where address = 'C*' and sex contains 'ma*'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String address = (String)entity.getProperty("address");
if((StringUtils.startsWith(address,"C")) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlAddressBeginswithAndSexFulltext() {
String sqlite = "SELECT * FROM users WHERE (address LIKE 'D%' and sex LIKE '%male%') LIMIT 10";
String api = "select * where address = 'D*' and sex contains 'male'";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
String address = (String)entity.getProperty("address");
if((StringUtils.startsWith(address,"D")) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void qlSexEqualOrAgeGreaterthanequalAndAgeLessthan_limitL20() {
String sqlite = "SELECT * FROM users WHERE sex = 'female' or age >= 12 and age < 20 LIMIT 20";
String api = "select * where sex = 'female' or age >= 12 and age < 20";
int limit = 20;
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
request.getApiQuery().setLimit(limit);
QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
@Override
public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
boolean equals = expectedEntities.size() == expectedEntities.size();
if( !equals )
return false;
for(Entity entity : actuallyEntities) {
int age = (Integer)entity.getProperty("age");
String sex = (String)entity.getProperty("sex");
if(((StringUtils.equals("female",sex) || age >= 12) && age < 20) == false) {
return false;
}
}
return equals;
}
});
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortNameAsc() {
String sqlite = "SELECT * FROM users ORDER BY name asc LIMIT 10";
String api = "select * order by name asc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortNameDesc() {
String sqlite = "SELECT * FROM users ORDER BY name desc LIMIT 10";
String api = "select * order by name desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortNameAscAgeDesc() {
String sqlite = "SELECT * FROM users ORDER BY name asc, age desc LIMIT 10";
String api = "select * order by name asc, age desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortNameAscAddressAsc() {
String sqlite = "SELECT * FROM users ORDER BY name asc, address asc LIMIT 10";
String api = "select * order by name asc, address asc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortCreatedAsc() {
String sqlite = "SELECT * FROM users ORDER BY created asc LIMIT 10";
String api = "select * order by created asc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortCreatedDesc() {
String sqlite = "SELECT * FROM users ORDER BY created desc LIMIT 10";
String api = "select * order by created desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortModifiedAsc() {
String sqlite = "SELECT * FROM users ORDER BY modified asc LIMIT 10";
String api = "select * order by modified asc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortCreatedDescNameAsc() {
String sqlite = "SELECT * FROM users ORDER BY created desc, name asc LIMIT 10";
String api = "select * order by created desc, name asc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
@Test
public void sortNameAscCreatedDesc() {
String sqlite = "SELECT * FROM users ORDER BY name asc, created desc LIMIT 10";
String api = "select * order by name asc, created desc";
QueryRequest request = new QueryRequest();
request.setDbQuery(sqlite);
request.getApiQuery().setQuery(api);
QueryResponse response = validator.execute(request);
Assert.assertTrue(response.toString(), response.result());
}
}