mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
added tests
This commit is contained in:
parent
1ea5450ac5
commit
aa9f89dcd4
@ -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() {
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user