mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@16975 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import absolute_import
 | |
| 
 | |
| from django.test import TestCase
 | |
| 
 | |
| from .models import Person, Book, Car, PersonManager, PublishedBookManager
 | |
| 
 | |
| 
 | |
| class CustomManagerTests(TestCase):
 | |
|     def test_manager(self):
 | |
|         p1 = Person.objects.create(first_name="Bugs", last_name="Bunny", fun=True)
 | |
|         p2 = Person.objects.create(first_name="Droopy", last_name="Dog", fun=False)
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Person.objects.get_fun_people(), [
 | |
|                 "Bugs Bunny"
 | |
|             ],
 | |
|             unicode
 | |
|         )
 | |
|         # The RelatedManager used on the 'books' descriptor extends the default
 | |
|         # manager
 | |
|         self.assertTrue(isinstance(p2.books, PublishedBookManager))
 | |
| 
 | |
|         b1 = Book.published_objects.create(
 | |
|             title="How to program", author="Rodney Dangerfield", is_published=True
 | |
|         )
 | |
|         b2 = Book.published_objects.create(
 | |
|             title="How to be smart", author="Albert Einstein", is_published=False
 | |
|         )
 | |
| 
 | |
|         # The default manager, "objects", doesn't exist, because a custom one
 | |
|         # was provided.
 | |
|         self.assertRaises(AttributeError, lambda: Book.objects)
 | |
| 
 | |
|         # The RelatedManager used on the 'authors' descriptor extends the
 | |
|         # default manager
 | |
|         self.assertTrue(isinstance(b2.authors, PersonManager))
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Book.published_objects.all(), [
 | |
|                 "How to program",
 | |
|             ],
 | |
|             lambda b: b.title
 | |
|         )
 | |
| 
 | |
|         c1 = Car.cars.create(name="Corvette", mileage=21, top_speed=180)
 | |
|         c2 = Car.cars.create(name="Neon", mileage=31, top_speed=100)
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Car.cars.order_by("name"), [
 | |
|                 "Corvette",
 | |
|                 "Neon",
 | |
|             ],
 | |
|             lambda c: c.name
 | |
|         )
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Car.fast_cars.all(), [
 | |
|                 "Corvette",
 | |
|             ],
 | |
|             lambda c: c.name
 | |
|         )
 | |
| 
 | |
|         # Each model class gets a "_default_manager" attribute, which is a
 | |
|         # reference to the first manager defined in the class. In this case,
 | |
|         # it's "cars".
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Car._default_manager.order_by("name"), [
 | |
|                 "Corvette",
 | |
|                 "Neon",
 | |
|             ],
 | |
|             lambda c: c.name
 | |
|         )
 |