Fixing PY3.3 test cases

This commit is contained in:
Ross Lawley 2013-01-10 11:08:07 +00:00
parent 06681a453f
commit 87c965edd3
3 changed files with 21 additions and 10 deletions

View File

@ -7,10 +7,11 @@ import operator
from collections import defaultdict from collections import defaultdict
from functools import partial from functools import partial
from mongoengine.python_support import product, reduce from mongoengine.python_support import product, reduce, PY3
import pymongo import pymongo
from bson.code import Code from bson.code import Code
from bson.son import SON
from mongoengine import signals from mongoengine import signals
@ -388,7 +389,12 @@ class QuerySet(object):
if self._mongo_query is None: if self._mongo_query is None:
self._mongo_query = self._query_obj.to_query(self._document) self._mongo_query = self._query_obj.to_query(self._document)
if self._class_check: if self._class_check:
self._mongo_query.update(self._initial_query) if PY3:
query = SON(self._initial_query.items())
query.update(self._mongo_query)
self._mongo_query = query
else:
self._mongo_query.update(self._initial_query)
return self._mongo_query return self._mongo_query
def ensure_index(self, key_or_list, drop_dups=False, background=False, def ensure_index(self, key_or_list, drop_dups=False, background=False,
@ -704,7 +710,7 @@ class QuerySet(object):
mongo_query = {} mongo_query = {}
merge_query = defaultdict(list) merge_query = defaultdict(list)
for key, value in query.items(): for key, value in sorted(query.items()):
if key == "__raw__": if key == "__raw__":
mongo_query.update(value) mongo_query.update(value)
continue continue

View File

@ -8,6 +8,7 @@ import sys
import unittest import unittest
import uuid import uuid
import warnings import warnings
import operator
from nose.plugins.skip import SkipTest from nose.plugins.skip import SkipTest
from datetime import datetime from datetime import datetime
@ -452,7 +453,8 @@ class DocumentTest(unittest.TestCase):
info = collection.index_information() info = collection.index_information()
info = [value['key'] for key, value in info.iteritems()] info = [value['key'] for key, value in info.iteritems()]
self.assertEqual([[(u'_id', 1)], [(u'_types', 1), (u'name', 1)]], info) self.assertEqual([[('_id', 1)], [('_types', 1), ('name', 1)]],
sorted(info, key=operator.itemgetter(0)))
# Turn off inheritance # Turn off inheritance
class Animal(Document): class Animal(Document):
@ -473,7 +475,8 @@ class DocumentTest(unittest.TestCase):
info = collection.index_information() info = collection.index_information()
info = [value['key'] for key, value in info.iteritems()] info = [value['key'] for key, value in info.iteritems()]
self.assertEqual([[(u'_id', 1)], [(u'_types', 1), (u'name', 1)]], info) self.assertEqual([[(u'_id', 1)], [(u'_types', 1), (u'name', 1)]],
sorted(info, key=operator.itemgetter(0)))
info = collection.index_information() info = collection.index_information()
indexes_to_drop = [key for key, value in info.iteritems() if '_types' in dict(value['key'])] indexes_to_drop = [key for key, value in info.iteritems() if '_types' in dict(value['key'])]
@ -482,14 +485,16 @@ class DocumentTest(unittest.TestCase):
info = collection.index_information() info = collection.index_information()
info = [value['key'] for key, value in info.iteritems()] info = [value['key'] for key, value in info.iteritems()]
self.assertEqual([[(u'_id', 1)]], info) self.assertEqual([[(u'_id', 1)]],
sorted(info, key=operator.itemgetter(0)))
# Recreate indexes # Recreate indexes
dog = Animal.objects.first() dog = Animal.objects.first()
dog.save() dog.save()
info = collection.index_information() info = collection.index_information()
info = [value['key'] for key, value in info.iteritems()] info = [value['key'] for key, value in info.iteritems()]
self.assertEqual([[(u'_id', 1)], [(u'name', 1),]], info) self.assertEqual([[(u'_id', 1)], [(u'name', 1),]],
sorted(info, key=operator.itemgetter(0)))
Animal.drop_collection() Animal.drop_collection()
@ -3412,8 +3417,8 @@ class ValidatorErrorTest(unittest.TestCase):
try: try:
User().validate() User().validate()
except ValidationError, e: except ValidationError, e:
expected_error_message = """ValidationError(Field is required: ['username', 'name'])""" expected_error_message = """ValidationError(Field is required"""
self.assertEqual(e.message, expected_error_message) self.assertTrue(expected_error_message in e.message)
self.assertEqual(e.to_dict(), { self.assertEqual(e.to_dict(), {
'username': 'Field is required', 'username': 'Field is required',
'name': 'Field is required'}) 'name': 'Field is required'})

View File

@ -47,7 +47,7 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(QuerySet._transform_query(age__gt=20, age__lt=50), self.assertEqual(QuerySet._transform_query(age__gt=20, age__lt=50),
{'age': {'$gt': 20, '$lt': 50}}) {'age': {'$gt': 20, '$lt': 50}})
self.assertEqual(QuerySet._transform_query(age=20, age__gt=50), self.assertEqual(QuerySet._transform_query(age=20, age__gt=50),
{'age': 20}) {'$and': [{'age': {'$gt': 50}}, {'age': 20}]})
self.assertEqual(QuerySet._transform_query(friend__age__gte=30), self.assertEqual(QuerySet._transform_query(friend__age__gte=30),
{'friend.age': {'$gte': 30}}) {'friend.age': {'$gte': 30}})
self.assertEqual(QuerySet._transform_query(name__exists=True), self.assertEqual(QuerySet._transform_query(name__exists=True),