more work on coverage
This commit is contained in:
parent
00d2fd685a
commit
c82f0c937d
@ -110,9 +110,6 @@ class ValidationError(AssertionError):
|
|||||||
|
|
||||||
def build_dict(source):
|
def build_dict(source):
|
||||||
errors_dict = {}
|
errors_dict = {}
|
||||||
if not source:
|
|
||||||
return errors_dict
|
|
||||||
|
|
||||||
if isinstance(source, dict):
|
if isinstance(source, dict):
|
||||||
for field_name, error in iteritems(source):
|
for field_name, error in iteritems(source):
|
||||||
errors_dict[field_name] = build_dict(error)
|
errors_dict[field_name] = build_dict(error)
|
||||||
|
@ -839,7 +839,6 @@ class IndexesTest(unittest.TestCase):
|
|||||||
Customer.drop_collection()
|
Customer.drop_collection()
|
||||||
Customer.objects.first()
|
Customer.objects.first()
|
||||||
|
|
||||||
|
|
||||||
def test_unique_and_indexes(self):
|
def test_unique_and_indexes(self):
|
||||||
"""Ensure that 'unique' constraints aren't overridden by
|
"""Ensure that 'unique' constraints aren't overridden by
|
||||||
meta.indexes.
|
meta.indexes.
|
||||||
|
@ -75,6 +75,16 @@ class TestEmailField(MongoDBTestCase):
|
|||||||
user = User(email='me@localhost')
|
user = User(email='me@localhost')
|
||||||
user.validate()
|
user.validate()
|
||||||
|
|
||||||
|
def test_email_domain_validation_fails_if_invalid_idn(self):
|
||||||
|
class User(Document):
|
||||||
|
email = EmailField()
|
||||||
|
|
||||||
|
invalid_idn = '.google.com'
|
||||||
|
user = User(email='me@%s' % invalid_idn)
|
||||||
|
with self.assertRaises(ValidationError) as ctx_err:
|
||||||
|
user.validate()
|
||||||
|
self.assertIn("domain failed IDN encoding", str(ctx_err.exception))
|
||||||
|
|
||||||
def test_email_field_ip_domain(self):
|
def test_email_field_ip_domain(self):
|
||||||
class User(Document):
|
class User(Document):
|
||||||
email = EmailField()
|
email = EmailField()
|
||||||
|
@ -158,6 +158,11 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
self.assertEqual(person.name, 'User B')
|
self.assertEqual(person.name, 'User B')
|
||||||
self.assertEqual(person.age, None)
|
self.assertEqual(person.age, None)
|
||||||
|
|
||||||
|
def test___getitem___invalid_index(self):
|
||||||
|
"""Ensure slicing a queryset works as expected."""
|
||||||
|
with self.assertRaises(TypeError):
|
||||||
|
self.Person.objects()['a']
|
||||||
|
|
||||||
def test_slice(self):
|
def test_slice(self):
|
||||||
"""Ensure slicing a queryset works as expected."""
|
"""Ensure slicing a queryset works as expected."""
|
||||||
user_a = self.Person.objects.create(name='User A', age=20)
|
user_a = self.Person.objects.create(name='User A', age=20)
|
||||||
@ -986,6 +991,29 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
inserted_comment_id = Comment.objects.insert(comment, load_bulk=False)
|
inserted_comment_id = Comment.objects.insert(comment, load_bulk=False)
|
||||||
self.assertEqual(comment.id, inserted_comment_id)
|
self.assertEqual(comment.id, inserted_comment_id)
|
||||||
|
|
||||||
|
def test_bulk_insert_accepts_doc_with_ids(self):
|
||||||
|
class Comment(Document):
|
||||||
|
id = IntField(primary_key=True)
|
||||||
|
|
||||||
|
Comment.drop_collection()
|
||||||
|
|
||||||
|
com1 = Comment(id=0)
|
||||||
|
com2 = Comment(id=1)
|
||||||
|
Comment.objects.insert([com1, com2])
|
||||||
|
|
||||||
|
def test_insert_raise_if_duplicate_in_constraint(self):
|
||||||
|
class Comment(Document):
|
||||||
|
id = IntField(primary_key=True)
|
||||||
|
|
||||||
|
Comment.drop_collection()
|
||||||
|
|
||||||
|
com1 = Comment(id=0)
|
||||||
|
|
||||||
|
Comment.objects.insert(com1)
|
||||||
|
|
||||||
|
with self.assertRaises(NotUniqueError):
|
||||||
|
Comment.objects.insert(com1)
|
||||||
|
|
||||||
def test_get_changed_fields_query_count(self):
|
def test_get_changed_fields_query_count(self):
|
||||||
"""Make sure we don't perform unnecessary db operations when
|
"""Make sure we don't perform unnecessary db operations when
|
||||||
none of document's fields were updated.
|
none of document's fields were updated.
|
||||||
@ -3570,6 +3598,11 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
opts = {"deleted": False}
|
opts = {"deleted": False}
|
||||||
return qryset(**opts)
|
return qryset(**opts)
|
||||||
|
|
||||||
|
@queryset_manager
|
||||||
|
def objects_1_arg(qryset):
|
||||||
|
opts = {"deleted": False}
|
||||||
|
return qryset(**opts)
|
||||||
|
|
||||||
@queryset_manager
|
@queryset_manager
|
||||||
def music_posts(doc_cls, queryset, deleted=False):
|
def music_posts(doc_cls, queryset, deleted=False):
|
||||||
return queryset(tags='music',
|
return queryset(tags='music',
|
||||||
@ -3584,6 +3617,8 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual([p.id for p in BlogPost.objects()],
|
self.assertEqual([p.id for p in BlogPost.objects()],
|
||||||
[post1.id, post2.id, post3.id])
|
[post1.id, post2.id, post3.id])
|
||||||
|
self.assertEqual([p.id for p in BlogPost.objects_1_arg()],
|
||||||
|
[post1.id, post2.id, post3.id])
|
||||||
self.assertEqual([p.id for p in BlogPost.music_posts()],
|
self.assertEqual([p.id for p in BlogPost.music_posts()],
|
||||||
[post1.id, post2.id])
|
[post1.id, post2.id])
|
||||||
|
|
||||||
@ -4968,6 +5003,38 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
people.count()
|
people.count()
|
||||||
self.assertEqual(q, 3)
|
self.assertEqual(q, 3)
|
||||||
|
|
||||||
|
def test_no_cached_queryset__repr__(self):
|
||||||
|
class Person(Document):
|
||||||
|
name = StringField()
|
||||||
|
|
||||||
|
Person.drop_collection()
|
||||||
|
qs = Person.objects.no_cache()
|
||||||
|
self.assertEqual(repr(qs), '[]')
|
||||||
|
|
||||||
|
def test_no_cached_on_a_cached_queryset_raise_error(self):
|
||||||
|
class Person(Document):
|
||||||
|
name = StringField()
|
||||||
|
|
||||||
|
Person.drop_collection()
|
||||||
|
Person(name='a').save()
|
||||||
|
qs = Person.objects()
|
||||||
|
_ = list(qs)
|
||||||
|
with self.assertRaises(OperationError) as ctx_err:
|
||||||
|
qs.no_cache()
|
||||||
|
self.assertEqual("QuerySet already cached", str(ctx_err.exception))
|
||||||
|
|
||||||
|
def test_no_cached_queryset_no_cache_back_to_cache(self):
|
||||||
|
class Person(Document):
|
||||||
|
name = StringField()
|
||||||
|
|
||||||
|
Person.drop_collection()
|
||||||
|
qs = Person.objects()
|
||||||
|
self.assertIsInstance(qs, QuerySet)
|
||||||
|
qs = qs.no_cache()
|
||||||
|
self.assertIsInstance(qs, QuerySetNoCache)
|
||||||
|
qs = qs.cache()
|
||||||
|
self.assertIsInstance(qs, QuerySet)
|
||||||
|
|
||||||
def test_cache_not_cloned(self):
|
def test_cache_not_cloned(self):
|
||||||
|
|
||||||
class User(Document):
|
class User(Document):
|
||||||
|
@ -71,6 +71,14 @@ class TransformTest(unittest.TestCase):
|
|||||||
update = transform.update(BlogPost, push_all__tags=['mongo', 'db'])
|
update = transform.update(BlogPost, push_all__tags=['mongo', 'db'])
|
||||||
self.assertEqual(update, {'$push': {'tags': {'$each': ['mongo', 'db']}}})
|
self.assertEqual(update, {'$push': {'tags': {'$each': ['mongo', 'db']}}})
|
||||||
|
|
||||||
|
def test_transform_update_no_operator_default_to_set(self):
|
||||||
|
"""Ensure the differences in behvaior between 'push' and 'push_all'"""
|
||||||
|
class BlogPost(Document):
|
||||||
|
tags = ListField(StringField())
|
||||||
|
|
||||||
|
update = transform.update(BlogPost, tags=['mongo', 'db'])
|
||||||
|
self.assertEqual(update, {'$set': {'tags': ['mongo', 'db']}})
|
||||||
|
|
||||||
def test_query_field_name(self):
|
def test_query_field_name(self):
|
||||||
"""Ensure that the correct field name is used when querying.
|
"""Ensure that the correct field name is used when querying.
|
||||||
"""
|
"""
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
import unittest
|
||||||
|
|
||||||
|
from mongoengine.common import _import_class
|
||||||
|
from mongoengine import Document
|
||||||
|
|
||||||
|
|
||||||
|
class TestCommon(unittest.TestCase):
|
||||||
|
|
||||||
|
def test__import_class(self):
|
||||||
|
doc_cls = _import_class("Document")
|
||||||
|
self.assertIs(doc_cls, Document)
|
||||||
|
|
||||||
|
def test__import_class_raise_if_not_known(self):
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
_import_class("UnknownClass")
|
@ -270,6 +270,14 @@ class ContextManagersTest(unittest.TestCase):
|
|||||||
counter += 1
|
counter += 1
|
||||||
self.assertEqual(q, counter)
|
self.assertEqual(q, counter)
|
||||||
|
|
||||||
|
self.assertEqual(int(q), counter) # test __int__
|
||||||
|
self.assertEqual(repr(q), str(int(q))) # test __repr__
|
||||||
|
self.assertGreater(q, -1) # test __gt__
|
||||||
|
self.assertGreaterEqual(q, int(q)) # test __gte__
|
||||||
|
self.assertNotEqual(q, -1)
|
||||||
|
self.assertLess(q, 1000)
|
||||||
|
self.assertLessEqual(q, int(q))
|
||||||
|
|
||||||
def test_query_counter_counts_getmore_queries(self):
|
def test_query_counter_counts_getmore_queries(self):
|
||||||
connect('mongoenginetest')
|
connect('mongoenginetest')
|
||||||
db = get_db()
|
db = get_db()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
from six import iterkeys
|
||||||
|
|
||||||
from mongoengine import Document
|
from mongoengine import Document
|
||||||
from mongoengine.base.datastructures import StrictDict, BaseList, BaseDict
|
from mongoengine.base.datastructures import StrictDict, BaseList, BaseDict
|
||||||
@ -368,6 +369,20 @@ class TestStrictDict(unittest.TestCase):
|
|||||||
d = self.dtype(a=1, b=1, c=1)
|
d = self.dtype(a=1, b=1, c=1)
|
||||||
self.assertEqual((d.a, d.b, d.c), (1, 1, 1))
|
self.assertEqual((d.a, d.b, d.c), (1, 1, 1))
|
||||||
|
|
||||||
|
def test_iterkeys(self):
|
||||||
|
d = self.dtype(a=1)
|
||||||
|
self.assertEqual(list(iterkeys(d)), ['a'])
|
||||||
|
|
||||||
|
def test_len(self):
|
||||||
|
d = self.dtype(a=1)
|
||||||
|
self.assertEqual(len(d), 1)
|
||||||
|
|
||||||
|
def test_pop(self):
|
||||||
|
d = self.dtype(a=1)
|
||||||
|
self.assertIn('a', d)
|
||||||
|
d.pop('a')
|
||||||
|
self.assertNotIn('a', d)
|
||||||
|
|
||||||
def test_repr(self):
|
def test_repr(self):
|
||||||
d = self.dtype(a=1, b=2, c=3)
|
d = self.dtype(a=1, b=2, c=3)
|
||||||
self.assertEqual(repr(d), '{"a": 1, "b": 2, "c": 3}')
|
self.assertEqual(repr(d), '{"a": 1, "b": 2, "c": 3}')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user