Merge branch 'master' of github.com:MongoEngine/mongoengine into release_0_18_1
This commit is contained in:
commit
c96065b187
@ -333,41 +333,36 @@ class InstanceTest(MongoDBTestCase):
|
|||||||
self.assertEqual(User._fields['username'].db_field, '_id')
|
self.assertEqual(User._fields['username'].db_field, '_id')
|
||||||
self.assertEqual(User._meta['id_field'], 'username')
|
self.assertEqual(User._meta['id_field'], 'username')
|
||||||
|
|
||||||
# test no primary key field
|
User.objects.create(username='test', name='test user')
|
||||||
self.assertRaises(ValidationError, User(name='test').save)
|
user = User.objects.first()
|
||||||
|
self.assertEqual(user.id, 'test')
|
||||||
|
self.assertEqual(user.pk, 'test')
|
||||||
|
user_dict = User.objects._collection.find_one()
|
||||||
|
self.assertEqual(user_dict['_id'], 'test')
|
||||||
|
|
||||||
# define a subclass with a different primary key field than the
|
def test_change_custom_id_field_in_subclass(self):
|
||||||
# parent
|
"""Subclasses cannot override which field is the primary key."""
|
||||||
with self.assertRaises(ValueError):
|
class User(Document):
|
||||||
|
username = StringField(primary_key=True)
|
||||||
|
name = StringField()
|
||||||
|
meta = {'allow_inheritance': True}
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError) as e:
|
||||||
class EmailUser(User):
|
class EmailUser(User):
|
||||||
email = StringField(primary_key=True)
|
email = StringField(primary_key=True)
|
||||||
|
exc = e.exception
|
||||||
|
self.assertEqual(str(exc), 'Cannot override primary key field')
|
||||||
|
|
||||||
class EmailUser(User):
|
def test_custom_id_field_is_required(self):
|
||||||
email = StringField()
|
"""Ensure the custom primary key field is required."""
|
||||||
|
class User(Document):
|
||||||
|
username = StringField(primary_key=True)
|
||||||
|
name = StringField()
|
||||||
|
|
||||||
user = User(username='test', name='test user')
|
with self.assertRaises(ValidationError) as e:
|
||||||
user.save()
|
User(name='test').save()
|
||||||
|
exc = e.exception
|
||||||
user_obj = User.objects.first()
|
self.assertTrue("Field is required: ['username']" in str(exc))
|
||||||
self.assertEqual(user_obj.id, 'test')
|
|
||||||
self.assertEqual(user_obj.pk, 'test')
|
|
||||||
|
|
||||||
user_son = User.objects._collection.find_one()
|
|
||||||
self.assertEqual(user_son['_id'], 'test')
|
|
||||||
self.assertNotIn('username', user_son['_id'])
|
|
||||||
|
|
||||||
User.drop_collection()
|
|
||||||
|
|
||||||
user = User(pk='mongo', name='mongo user')
|
|
||||||
user.save()
|
|
||||||
|
|
||||||
user_obj = User.objects.first()
|
|
||||||
self.assertEqual(user_obj.id, 'mongo')
|
|
||||||
self.assertEqual(user_obj.pk, 'mongo')
|
|
||||||
|
|
||||||
user_son = User.objects._collection.find_one()
|
|
||||||
self.assertEqual(user_son['_id'], 'mongo')
|
|
||||||
self.assertNotIn('username', user_son['_id'])
|
|
||||||
|
|
||||||
def test_document_not_registered(self):
|
def test_document_not_registered(self):
|
||||||
class Place(Document):
|
class Place(Document):
|
||||||
@ -1583,7 +1578,7 @@ class InstanceTest(MongoDBTestCase):
|
|||||||
self.assertEqual(person.age, 21)
|
self.assertEqual(person.age, 21)
|
||||||
self.assertEqual(person.active, False)
|
self.assertEqual(person.active, False)
|
||||||
|
|
||||||
def test__get_changed_fields_same_ids_reference_field_does_not_enters_infinite_loop(self):
|
def test__get_changed_fields_same_ids_reference_field_does_not_enters_infinite_loop_embedded_doc(self):
|
||||||
# Refers to Issue #1685
|
# Refers to Issue #1685
|
||||||
class EmbeddedChildModel(EmbeddedDocument):
|
class EmbeddedChildModel(EmbeddedDocument):
|
||||||
id = DictField(primary_key=True)
|
id = DictField(primary_key=True)
|
||||||
@ -1593,9 +1588,11 @@ class InstanceTest(MongoDBTestCase):
|
|||||||
EmbeddedChildModel)
|
EmbeddedChildModel)
|
||||||
|
|
||||||
emb = EmbeddedChildModel(id={'1': [1]})
|
emb = EmbeddedChildModel(id={'1': [1]})
|
||||||
ParentModel(child=emb)._get_changed_fields()
|
changed_fields = ParentModel(child=emb)._get_changed_fields()
|
||||||
|
self.assertEqual(changed_fields, [])
|
||||||
|
|
||||||
def test__get_changed_fields_same_ids_reference_field_does_not_enters_infinite_loop_full_caseEmailUser(self):
|
def test__get_changed_fields_same_ids_reference_field_does_not_enters_infinite_loop_different_doc(self):
|
||||||
|
# Refers to Issue #1685
|
||||||
class User(Document):
|
class User(Document):
|
||||||
id = IntField(primary_key=True)
|
id = IntField(primary_key=True)
|
||||||
name = StringField()
|
name = StringField()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user