/tests/modeltests/custom_managers/tests.py
https://code.google.com/p/mango-py/ · Python · 71 lines · 49 code · 13 blank · 9 comment · 0 complexity · ee376fbf1df13b3112c3b3c8f8e30c61 MD5 · raw file
- 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
- )