Merge branch 'dev' into indexpatches
This commit is contained in:
@@ -1057,11 +1057,11 @@ class DocumentTest(unittest.TestCase):
|
||||
|
||||
Person.drop_collection()
|
||||
|
||||
p1 = Person(name="Wilson Jr")
|
||||
p1 = Person(name="Wilson Snr")
|
||||
p1.parent = None
|
||||
p1.save()
|
||||
|
||||
p2 = Person(name="Wilson Jr2")
|
||||
p2 = Person(name="Wilson Jr")
|
||||
p2.parent = p1
|
||||
p2.save()
|
||||
|
||||
@@ -1074,6 +1074,51 @@ class DocumentTest(unittest.TestCase):
|
||||
p0.name = 'wpjunior'
|
||||
p0.save()
|
||||
|
||||
def test_save_cascades(self):
|
||||
|
||||
class Person(Document):
|
||||
name = StringField()
|
||||
parent = ReferenceField('self')
|
||||
|
||||
Person.drop_collection()
|
||||
|
||||
p1 = Person(name="Wilson Snr")
|
||||
p1.parent = None
|
||||
p1.save()
|
||||
|
||||
p2 = Person(name="Wilson Jr")
|
||||
p2.parent = p1
|
||||
p2.save()
|
||||
|
||||
p = Person.objects(name="Wilson Jr").get()
|
||||
p.parent.name = "Daddy Wilson"
|
||||
p.save()
|
||||
|
||||
p1.reload()
|
||||
self.assertEquals(p1.name, p.parent.name)
|
||||
|
||||
def test_save_cascades_generically(self):
|
||||
|
||||
class Person(Document):
|
||||
name = StringField()
|
||||
parent = GenericReferenceField()
|
||||
|
||||
Person.drop_collection()
|
||||
|
||||
p1 = Person(name="Wilson Snr")
|
||||
p1.save()
|
||||
|
||||
p2 = Person(name="Wilson Jr")
|
||||
p2.parent = p1
|
||||
p2.save()
|
||||
|
||||
p = Person.objects(name="Wilson Jr").get()
|
||||
p.parent.name = "Daddy Wilson"
|
||||
p.save()
|
||||
|
||||
p1.reload()
|
||||
self.assertEquals(p1.name, p.parent.name)
|
||||
|
||||
def test_update(self):
|
||||
"""Ensure that an existing document is updated instead of be overwritten.
|
||||
"""
|
||||
@@ -1367,22 +1412,31 @@ class DocumentTest(unittest.TestCase):
|
||||
"""Ensure save only sets / unsets changed fields
|
||||
"""
|
||||
|
||||
class User(self.Person):
|
||||
active = BooleanField(default=True)
|
||||
|
||||
|
||||
User.drop_collection()
|
||||
|
||||
# Create person object and save it to the database
|
||||
person = self.Person(name='Test User', age=30)
|
||||
person.save()
|
||||
person.reload()
|
||||
user = User(name='Test User', age=30, active=True)
|
||||
user.save()
|
||||
user.reload()
|
||||
|
||||
# Simulated Race condition
|
||||
same_person = self.Person.objects.get()
|
||||
same_person.active = False
|
||||
|
||||
user.age = 21
|
||||
user.save()
|
||||
|
||||
person.age = 21
|
||||
same_person.name = 'User'
|
||||
|
||||
person.save()
|
||||
same_person.save()
|
||||
|
||||
person = self.Person.objects.get()
|
||||
self.assertEquals(person.name, 'User')
|
||||
self.assertEquals(person.age, 21)
|
||||
self.assertEquals(person.active, False)
|
||||
|
||||
def test_delete(self):
|
||||
"""Ensure that document may be deleted using the delete method.
|
||||
|
||||
@@ -1781,6 +1781,28 @@ class QuerySetTest(unittest.TestCase):
|
||||
test_assertions(exec_js)
|
||||
test_assertions(map_reduce)
|
||||
|
||||
def test_item_frequencies_null_values(self):
|
||||
|
||||
class Person(Document):
|
||||
name = StringField()
|
||||
city = StringField()
|
||||
|
||||
Person.drop_collection()
|
||||
|
||||
Person(name="Wilson Snr", city="CRB").save()
|
||||
Person(name="Wilson Jr").save()
|
||||
|
||||
freq = Person.objects.item_frequencies('city')
|
||||
self.assertEquals(freq, {'CRB': 1.0, None: 1.0})
|
||||
freq = Person.objects.item_frequencies('city', normalize=True)
|
||||
self.assertEquals(freq, {'CRB': 0.5, None: 0.5})
|
||||
|
||||
|
||||
freq = Person.objects.item_frequencies('city', map_reduce=True)
|
||||
self.assertEquals(freq, {'CRB': 1.0, None: 1.0})
|
||||
freq = Person.objects.item_frequencies('city', normalize=True, map_reduce=True)
|
||||
self.assertEquals(freq, {'CRB': 0.5, None: 0.5})
|
||||
|
||||
def test_average(self):
|
||||
"""Ensure that field can be averaged correctly.
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user