more thorough and isolated unit tests
This commit is contained in:
parent
fba4477dd8
commit
70f1067470
@ -107,73 +107,110 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
"""Ensure that a query returns a valid set of results."""
|
"""Ensure that a query returns a valid set of results."""
|
||||||
self.Person(name="User A", age=20).save()
|
user_a = self.Person.objects.create(name='User A', age=20)
|
||||||
self.Person(name="User B", age=30).save()
|
user_b = self.Person.objects.create(name='User B', age=30)
|
||||||
|
|
||||||
# Find all people in the collection
|
# Find all people in the collection
|
||||||
people = self.Person.objects
|
people = self.Person.objects
|
||||||
self.assertEqual(people.count(), 2)
|
self.assertEqual(people.count(), 2)
|
||||||
results = list(people)
|
results = list(people)
|
||||||
|
|
||||||
self.assertTrue(isinstance(results[0], self.Person))
|
self.assertTrue(isinstance(results[0], self.Person))
|
||||||
self.assertTrue(isinstance(results[0].id, (ObjectId, str, unicode)))
|
self.assertTrue(isinstance(results[0].id, (ObjectId, str, unicode)))
|
||||||
self.assertEqual(results[0].name, "User A")
|
|
||||||
|
self.assertEqual(results[0], user_a)
|
||||||
|
self.assertEqual(results[0].name, 'User A')
|
||||||
self.assertEqual(results[0].age, 20)
|
self.assertEqual(results[0].age, 20)
|
||||||
self.assertEqual(results[1].name, "User B")
|
|
||||||
|
self.assertEqual(results[1], user_b)
|
||||||
|
self.assertEqual(results[1].name, 'User B')
|
||||||
self.assertEqual(results[1].age, 30)
|
self.assertEqual(results[1].age, 30)
|
||||||
|
|
||||||
# Use a query to filter the people found to just person1
|
# Filter people by age
|
||||||
people = self.Person.objects(age=20)
|
people = self.Person.objects(age=20)
|
||||||
self.assertEqual(people.count(), 1)
|
self.assertEqual(people.count(), 1)
|
||||||
person = people.next()
|
person = people.next()
|
||||||
|
self.assertEqual(person, user_a)
|
||||||
self.assertEqual(person.name, "User A")
|
self.assertEqual(person.name, "User A")
|
||||||
self.assertEqual(person.age, 20)
|
self.assertEqual(person.age, 20)
|
||||||
|
|
||||||
# Test limit
|
def test_limit(self):
|
||||||
|
"""Ensure that QuerySet.limit works as expected."""
|
||||||
|
user_a = self.Person.objects.create(name='User A', age=20)
|
||||||
|
user_b = self.Person.objects.create(name='User B', age=30)
|
||||||
|
|
||||||
|
# Test limit on a new queryset
|
||||||
people = list(self.Person.objects.limit(1))
|
people = list(self.Person.objects.limit(1))
|
||||||
self.assertEqual(len(people), 1)
|
self.assertEqual(len(people), 1)
|
||||||
self.assertEqual(people[0].name, 'User A')
|
self.assertEqual(people[0], user_a)
|
||||||
|
|
||||||
# Test limit on an existing queryset
|
# Test limit on an existing queryset
|
||||||
people = self.Person.objects
|
people = self.Person.objects
|
||||||
self.assertEqual(len(people), 2)
|
self.assertEqual(len(people), 2)
|
||||||
self.assertEqual(len(people.limit(1)), 1)
|
people2 = people.limit(1)
|
||||||
|
self.assertEqual(len(people), 2)
|
||||||
|
self.assertEqual(len(people2), 1)
|
||||||
|
self.assertEqual(people2[0], user_a)
|
||||||
|
|
||||||
# Test skip
|
# Test chaining of only after limit
|
||||||
|
person = self.Person.objects().limit(1).only('name').first()
|
||||||
|
self.assertEqual(person, user_a)
|
||||||
|
self.assertEqual(person.name, 'User A')
|
||||||
|
self.assertEqual(person.age, None)
|
||||||
|
|
||||||
|
def test_skip(self):
|
||||||
|
"""Ensure that QuerySet.skip works as expected."""
|
||||||
|
user_a = self.Person.objects.create(name='User A', age=20)
|
||||||
|
user_b = self.Person.objects.create(name='User B', age=30)
|
||||||
|
|
||||||
|
# Test skip on a new queryset
|
||||||
people = list(self.Person.objects.skip(1))
|
people = list(self.Person.objects.skip(1))
|
||||||
self.assertEqual(len(people), 1)
|
self.assertEqual(len(people), 1)
|
||||||
self.assertEqual(people[0].name, 'User B')
|
self.assertEqual(people[0], user_b)
|
||||||
|
|
||||||
# Test skip on an existing queryset
|
# Test skip on an existing queryset
|
||||||
people = self.Person.objects
|
people = self.Person.objects
|
||||||
self.assertEqual(len(people), 2)
|
self.assertEqual(len(people), 2)
|
||||||
self.assertEqual(len(people.skip(1)), 1)
|
people2 = people.skip(1)
|
||||||
|
self.assertEqual(len(people), 2)
|
||||||
|
self.assertEqual(len(people2), 1)
|
||||||
|
self.assertEqual(people2[0], user_b)
|
||||||
|
|
||||||
person3 = self.Person(name="User C", age=40)
|
# Test chaining of only after skip
|
||||||
person3.save()
|
person = self.Person.objects().skip(1).only('name').first()
|
||||||
|
self.assertEqual(person, user_b)
|
||||||
|
self.assertEqual(person.name, 'User B')
|
||||||
|
self.assertEqual(person.age, None)
|
||||||
|
|
||||||
|
def test_slice(self):
|
||||||
|
"""Ensure slicing a queryset works as expected."""
|
||||||
|
user_a = self.Person.objects.create(name='User A', age=20)
|
||||||
|
user_b = self.Person.objects.create(name='User B', age=30)
|
||||||
|
user_c = self.Person.objects.create(name="User C", age=40)
|
||||||
|
|
||||||
# Test slice limit
|
# Test slice limit
|
||||||
people = list(self.Person.objects[:2])
|
people = list(self.Person.objects[:2])
|
||||||
self.assertEqual(len(people), 2)
|
self.assertEqual(len(people), 2)
|
||||||
self.assertEqual(people[0].name, 'User A')
|
self.assertEqual(people[0], user_a)
|
||||||
self.assertEqual(people[1].name, 'User B')
|
self.assertEqual(people[1], user_b)
|
||||||
|
|
||||||
# Test slice skip
|
# Test slice skip
|
||||||
people = list(self.Person.objects[1:])
|
people = list(self.Person.objects[1:])
|
||||||
self.assertEqual(len(people), 2)
|
self.assertEqual(len(people), 2)
|
||||||
self.assertEqual(people[0].name, 'User B')
|
self.assertEqual(people[0], user_b)
|
||||||
self.assertEqual(people[1].name, 'User C')
|
self.assertEqual(people[1], user_c)
|
||||||
|
|
||||||
# Test slice limit and skip
|
# Test slice limit and skip
|
||||||
people = list(self.Person.objects[1:2])
|
people = list(self.Person.objects[1:2])
|
||||||
self.assertEqual(len(people), 1)
|
self.assertEqual(len(people), 1)
|
||||||
self.assertEqual(people[0].name, 'User B')
|
self.assertEqual(people[0], user_b)
|
||||||
|
|
||||||
# Test slice limit and skip on an existing queryset
|
# Test slice limit and skip on an existing queryset
|
||||||
people = self.Person.objects
|
people = self.Person.objects
|
||||||
self.assertEqual(len(people), 3)
|
self.assertEqual(len(people), 3)
|
||||||
people2 = people[1:2]
|
people2 = people[1:2]
|
||||||
self.assertEqual(len(people2), 1)
|
self.assertEqual(len(people2), 1)
|
||||||
self.assertEqual(people2[0].name, 'User B')
|
self.assertEqual(people2[0], user_b)
|
||||||
|
|
||||||
# Test slice limit and skip cursor reset
|
# Test slice limit and skip cursor reset
|
||||||
qs = self.Person.objects[1:2]
|
qs = self.Person.objects[1:2]
|
||||||
@ -204,12 +241,6 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
self.assertEqual("[<Person: Person object>, <Person: Person object>]",
|
self.assertEqual("[<Person: Person object>, <Person: Person object>]",
|
||||||
"%s" % self.Person.objects[51:53])
|
"%s" % self.Person.objects[51:53])
|
||||||
|
|
||||||
# Test only after limit
|
|
||||||
self.assertEqual(self.Person.objects().limit(2).only('name')[0].age, None)
|
|
||||||
|
|
||||||
# Test only after skip
|
|
||||||
self.assertEqual(self.Person.objects().skip(2).only('name')[0].age, None)
|
|
||||||
|
|
||||||
def test_find_one(self):
|
def test_find_one(self):
|
||||||
"""Ensure that a query using find_one returns a valid result.
|
"""Ensure that a query using find_one returns a valid result.
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user