added tests

This commit is contained in:
Timo Westkämper 2010-09-24 12:47:03 +00:00
parent 1ea5450ac5
commit aa9f89dcd4
2 changed files with 57 additions and 22 deletions

View File

@ -68,19 +68,16 @@ public class MongodbQuery<K> implements SimpleQuery<MongodbQuery<K>>,
@Override
public MongodbQuery<K> limit(long limit) {
//TODO Add support
return queryMixin.limit(limit);
}
@Override
public MongodbQuery<K> offset(long offset) {
//TODO Add support
return queryMixin.offset(offset);
}
@Override
public MongodbQuery<K> restrict(QueryModifiers modifiers) {
//TODO Implement this
return queryMixin.restrict(modifiers);
}
@ -127,15 +124,20 @@ public class MongodbQuery<K> implements SimpleQuery<MongodbQuery<K>>,
}
return results;
}
private DBCursor createCursor() {
QueryMetadata metadata = queryMixin.getMetadata();
// Long queryLimit = metadata.getModifiers().getLimit();
// Long queryOffset = metadata.getModifiers().getOffset();
QueryModifiers modifiers = metadata.getModifiers();
//This is bit weird, but without it, repeated lists fail to have valid objects
cache.flush();
DBCursor cursor = coll.find(createQuery());
if (modifiers.getLimit() != null){
cursor.limit(modifiers.getLimit().intValue());
}
if (modifiers.getOffset() != null){
cursor.skip(modifiers.getOffset().intValue());
}
if (metadata.getOrderBy().size() > 0) {
cursor.sort(serializer.toSort(metadata.getOrderBy()));
}
@ -144,7 +146,7 @@ public class MongodbQuery<K> implements SimpleQuery<MongodbQuery<K>>,
@Override
public List<K> listDistinct() {
throw new UnsupportedOperationException();
return list();
}
@Override
@ -155,13 +157,17 @@ public class MongodbQuery<K> implements SimpleQuery<MongodbQuery<K>>,
@Override
public SearchResults<K> listResults() {
//TODO Do this
throw new UnsupportedOperationException();
long total = count();
if (total > 0l){
return new SearchResults<K>(list(), queryMixin.getMetadata().getModifiers(), total);
}else{
return SearchResults.emptyResults();
}
}
@Override
public SearchResults<K> listDistinctResults() {
throw new UnsupportedOperationException();
return listResults();
}
@Override
@ -171,7 +177,7 @@ public class MongodbQuery<K> implements SimpleQuery<MongodbQuery<K>>,
@Override
public long countDistinct() {
throw new UnsupportedOperationException();
return count();
}
private DBObject createQuery() {

View File

@ -8,6 +8,8 @@ package com.mysema.query.mongodb;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@ -17,6 +19,7 @@ import org.junit.Test;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.mysema.query.SearchResults;
import com.mysema.query.mongodb.domain.QUser;
import com.mysema.query.mongodb.domain.User;
import com.mysema.query.types.OrderSpecifier;
@ -51,6 +54,39 @@ public class MongodbQueryTest {
assertEquals(4, query().count());
}
@Test
public void testOrder(){
List<User> users = query().orderBy(user.age.asc()).list();
assertEquals(Arrays.asList(u1, u2, u3, u4), users);
users = query().orderBy(user.age.desc()).list();
assertEquals(Arrays.asList(u4, u3, u2, u1), users);
}
@Test
public void testRestrict(){
assertEquals(Arrays.asList(u1, u2), query().limit(2).orderBy(user.age.asc()).list());
assertEquals(Arrays.asList(u2, u3), query().limit(2).offset(1).orderBy(user.age.asc()).list());
}
@Test
public void testListResults(){
SearchResults<User> results = query().limit(2).orderBy(user.age.asc()).listResults();
assertEquals(4l, results.getTotal());
assertEquals(2, results.getResults().size());
results = query().offset(2).orderBy(user.age.asc()).listResults();
assertEquals(4l, results.getTotal());
assertEquals(2, results.getResults().size());
}
@Test
public void testEmptyResults(){
SearchResults<User> results = query().where(user.firstName.eq("XXX")).listResults();
assertEquals(0l, results.getTotal());
assertEquals(Collections.emptyList(), results.getResults());
}
@Test
public void testEqInAndOrderByQueries() {
@ -132,17 +168,10 @@ public class MongodbQueryTest {
}
@Test
public void testUniqueResultAndLimitAndOffset() {
MongodbQuery<User> q = query().where(user.firstName.startsWith("Ja")).orderBy(user.age.asc());
assertEquals(4, q.list().size());
assertEquals(u1, q.uniqueResult());
public void testUniqueResultAndLimitAndOffset() {
MongodbQuery<User> q = query().where(user.firstName.startsWith("Ja")).orderBy(user.age.asc());
assertEquals(4, q.list().size());
assertEquals(u1, q.uniqueResult());
}