From 3217900e719414856fd1ce1306c40fbf6a7b3a01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 26 Mar 2010 10:28:56 +0000 Subject: [PATCH] added more tests --- .../com/mysema/query/search/SearchQuery.java | 8 +- .../mysema/query/search/SearchSerializer.java | 2 + .../query/search/AbstractQueryTest.java | 8 ++ .../mysema/query/search/SearchQueryTest.java | 104 +++++++++++++++--- 4 files changed, 105 insertions(+), 17 deletions(-) diff --git a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java index 1b0bc7445..89d5fe8d6 100644 --- a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java +++ b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchQuery.java @@ -39,15 +39,15 @@ public class SearchQuery implements SimpleQuery>, SimpleProjec private final PEntity path; - public SearchQuery(Session session, PEntity path, boolean lower) { - this(Search.getFullTextSession(session), path, lower); + public SearchQuery(Session session, PEntity path) { + this(Search.getFullTextSession(session), path); } - public SearchQuery(FullTextSession session, PEntity path, boolean lower) { + public SearchQuery(FullTextSession session, PEntity path) { this.queryMixin = new QueryMixin>(this); this.session = Assert.notNull(session,"session"); this.path = Assert.notNull(path,"path"); - this.serializer = new SearchSerializer(lower); + this.serializer = SearchSerializer.DEFAULT; } @Override diff --git a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java index 7cd494ba7..720f907e3 100644 --- a/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java +++ b/querydsl-hibernate-search/src/main/java/com/mysema/query/search/SearchSerializer.java @@ -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); } diff --git a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/AbstractQueryTest.java b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/AbstractQueryTest.java index e966f1f3f..3afc46f23 100644 --- a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/AbstractQueryTest.java +++ b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/AbstractQueryTest.java @@ -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 users = session.createQuery("from User").list(); + for (User user : users){ + session.delete(user); + } } @After diff --git a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java index f3614637b..58d6269ee 100644 --- a/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java +++ b/querydsl-hibernate-search/src/test/java/com/mysema/query/search/SearchQueryTest.java @@ -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 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 asc = getFirstNames(query().where(filter).orderBy(user.firstName.asc()).list()); + assertEquals(Arrays.asList("Anton","Barbara","John","Robert"), asc); + + // desc + List 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 limit = getFirstNames(query().where(filter).orderBy(order).limit(2).list()); + assertEquals(Arrays.asList("Anton","Barbara"), limit); + + // offset + List offset = getFirstNames(query().where(filter).orderBy(order).offset(1).list()); + assertEquals(Arrays.asList("Barbara","John","Robert"), offset); + + // limit + offset + List 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 users = query().where(filter).orderBy(user.firstName.asc()).limit(2).listResults(); + List asc = getFirstNames(users.getResults()); + assertEquals(Arrays.asList("Anton","Barbara"), asc); + assertEquals(4, users.getTotal()); + } + + private List getFirstNames(List users) { + List rv = new ArrayList(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 query(){ - return new SearchQuery(getSession(), user, true); + return new SearchQuery(getSession(), user); } }