added more tests

This commit is contained in:
Timo Westkämper 2010-03-26 10:28:56 +00:00
parent 8a6648b236
commit 3217900e71
4 changed files with 105 additions and 17 deletions

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}
}