mirror of
https://github.com/querydsl/querydsl.git
synced 2026-07-03 21:07:49 +08:00
added more tests
This commit is contained in:
parent
8a6648b236
commit
3217900e71
@ -39,15 +39,15 @@ public class SearchQuery<T> implements SimpleQuery<SearchQuery<T>>, SimpleProjec
|
||||
|
||||
private final PEntity<T> path;
|
||||
|
||||
public SearchQuery(Session session, PEntity<T> path, boolean lower) {
|
||||
this(Search.getFullTextSession(session), path, lower);
|
||||
public SearchQuery(Session session, PEntity<T> path) {
|
||||
this(Search.getFullTextSession(session), path);
|
||||
}
|
||||
|
||||
public SearchQuery(FullTextSession session, PEntity<T> path, boolean lower) {
|
||||
public SearchQuery(FullTextSession session, PEntity<T> path) {
|
||||
this.queryMixin = new QueryMixin<SearchQuery<T>>(this);
|
||||
this.session = Assert.notNull(session,"session");
|
||||
this.path = Assert.notNull(path,"path");
|
||||
this.serializer = new SearchSerializer(lower);
|
||||
this.serializer = SearchSerializer.DEFAULT;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -12,6 +12,8 @@ import com.mysema.query.types.Path;
|
||||
|
||||
public class SearchSerializer extends LuceneSerializer{
|
||||
|
||||
public static final SearchSerializer DEFAULT = new SearchSerializer(false);
|
||||
|
||||
public SearchSerializer(boolean lowerCase) {
|
||||
super(lowerCase);
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
@ -50,10 +51,17 @@ public abstract class AbstractQueryTest {
|
||||
return session;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Before
|
||||
public void setUp(){
|
||||
session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
|
||||
// clean up
|
||||
List<User> users = session.createQuery("from User").list();
|
||||
for (User user : users){
|
||||
session.delete(user);
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
|
||||
@ -6,38 +6,116 @@
|
||||
package com.mysema.query.search;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mysema.query.SearchResults;
|
||||
import com.mysema.query.types.OrderSpecifier;
|
||||
import com.mysema.query.types.expr.EBoolean;
|
||||
|
||||
|
||||
public class SearchQueryTest extends AbstractQueryTest{
|
||||
|
||||
private QUser user = new QUser("user");
|
||||
|
||||
public void setUp(){
|
||||
super.setUp();
|
||||
super.setUp();
|
||||
createUser("Bob", "Stewart","Smith", "bob@example.com");
|
||||
|
||||
createUser("Barbara","X","Lock","barbara@a.com");
|
||||
createUser("Anton","X","Bruckner","anton@b.com");
|
||||
createUser("Robert","X","Downing","bob@c.com");
|
||||
createUser("John","X","Stewart","john@d.com");
|
||||
|
||||
Session session = getSession();
|
||||
|
||||
User user = new User();
|
||||
user.setEmailAddress("bob@example.com");
|
||||
user.setFirstName("Bob");
|
||||
user.setLastName("Smith");
|
||||
user.setMiddleName("Stewart");
|
||||
session.save(user);
|
||||
session.flush();
|
||||
session.getTransaction().commit();
|
||||
|
||||
session.getTransaction().commit();
|
||||
session.beginTransaction();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test(){
|
||||
assertEquals(1, query().where(user.emailAddress.eq("bob@example.com")).count());
|
||||
public void basicTests(){
|
||||
EBoolean filter = user.emailAddress.eq("bob@example.com");
|
||||
|
||||
// count
|
||||
assertEquals(1, query().where(filter).count());
|
||||
|
||||
// uniqueResult
|
||||
User u = query().where(filter).uniqueResult();
|
||||
assertNotNull(u);
|
||||
assertEquals("bob@example.com", u.getEmailAddress());
|
||||
|
||||
// list
|
||||
List<User> list = query().where(filter).list();
|
||||
assertEquals(1, list.size());
|
||||
assertEquals(u, list.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ordering(){
|
||||
EBoolean filter = user.middleName.eq("X");
|
||||
// asc
|
||||
List<String> asc = getFirstNames(query().where(filter).orderBy(user.firstName.asc()).list());
|
||||
assertEquals(Arrays.asList("Anton","Barbara","John","Robert"), asc);
|
||||
|
||||
// desc
|
||||
List<String> desc = getFirstNames(query().where(filter).orderBy(user.firstName.desc()).list());
|
||||
assertEquals(Arrays.asList("Robert","John","Barbara","Anton"), desc);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void paging(){
|
||||
EBoolean filter = user.middleName.eq("X");
|
||||
OrderSpecifier<?> order = user.firstName.asc();
|
||||
|
||||
// limit
|
||||
List<String> limit = getFirstNames(query().where(filter).orderBy(order).limit(2).list());
|
||||
assertEquals(Arrays.asList("Anton","Barbara"), limit);
|
||||
|
||||
// offset
|
||||
List<String> offset = getFirstNames(query().where(filter).orderBy(order).offset(1).list());
|
||||
assertEquals(Arrays.asList("Barbara","John","Robert"), offset);
|
||||
|
||||
// limit + offset
|
||||
List<String> limitAndOffset = getFirstNames(query().where(filter).orderBy(order).limit(2).offset(1).list());
|
||||
assertEquals(Arrays.asList("Barbara","John"), limitAndOffset);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void listResults(){
|
||||
EBoolean filter = user.middleName.eq("X");
|
||||
SearchResults<User> users = query().where(filter).orderBy(user.firstName.asc()).limit(2).listResults();
|
||||
List<String> asc = getFirstNames(users.getResults());
|
||||
assertEquals(Arrays.asList("Anton","Barbara"), asc);
|
||||
assertEquals(4, users.getTotal());
|
||||
}
|
||||
|
||||
private List<String> getFirstNames(List<User> users) {
|
||||
List<String> rv = new ArrayList<String>(users.size());
|
||||
for (User user : users){
|
||||
rv.add(user.getFirstName());
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
private User createUser(String firstName, String middleName, String lastName, String email){
|
||||
User user = new User();
|
||||
user.setFirstName(firstName);
|
||||
user.setMiddleName(middleName);
|
||||
user.setLastName(lastName);
|
||||
user.setEmailAddress(email);
|
||||
getSession().save(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
private SearchQuery<User> query(){
|
||||
return new SearchQuery<User>(getSession(), user, true);
|
||||
return new SearchQuery<User>(getSession(), user);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user