diff options
author | Paul McMillan <Paul@McMillan.ws> | 2010-06-11 01:17:52 +0000 |
---|---|---|
committer | Paul McMillan <Paul@McMillan.ws> | 2010-06-11 01:17:52 +0000 |
commit | cc4703d5aeaf8059feddfe699ff8e58074a36e70 (patch) | |
tree | 8c2183a7eae72e983e2640b4344c984bcc7399ee | |
parent | 4ffeb59e86940089037ec90db7ed1aec523c4414 (diff) | |
download | django-cc4703d5aeaf8059feddfe699ff8e58074a36e70.tar.gz |
[soc2010/test-refactor] Converted custom_managers doctests to unittests.
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/test-refactor@13349 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r-- | tests/modeltests/custom_managers/fixtures/custom_managers_testdata.json | 48 | ||||
-rw-r--r-- | tests/modeltests/custom_managers/models.py | 48 | ||||
-rw-r--r-- | tests/modeltests/custom_managers/tests.py | 47 |
3 files changed, 95 insertions, 48 deletions
diff --git a/tests/modeltests/custom_managers/fixtures/custom_managers_testdata.json b/tests/modeltests/custom_managers/fixtures/custom_managers_testdata.json new file mode 100644 index 0000000000..bb0f7527e8 --- /dev/null +++ b/tests/modeltests/custom_managers/fixtures/custom_managers_testdata.json @@ -0,0 +1,48 @@ +[ + { + "pk": 1, + "model": "custom_managers.person", + "fields": { + "fun": true, + "first_name": "Bugs", + "last_name": "Bunny" + } + }, + { + "pk": 2, + "model": "custom_managers.person", + "fields": { + "fun": false, + "first_name": "Droopy", + "last_name": "Dog" + } + }, + { + "pk": 1, + "model": "custom_managers.book", + "fields": { + "authors": [], + "is_published": true, + "author": "Rodney Dangerfield", + "title": "How to program" + } + }, + { + "pk": 1, + "model": "custom_managers.car", + "fields": { + "mileage": 21, + "top_speed": 180, + "name": "Corvette" + } + }, + { + "pk": 2, + "model": "custom_managers.car", + "fields": { + "mileage": 31, + "top_speed": 100, + "name": "Neon" + } + } +]
\ No newline at end of file diff --git a/tests/modeltests/custom_managers/models.py b/tests/modeltests/custom_managers/models.py index 40bf77e273..1052552bb3 100644 --- a/tests/modeltests/custom_managers/models.py +++ b/tests/modeltests/custom_managers/models.py @@ -57,51 +57,3 @@ class Car(models.Model): def __unicode__(self): return self.name - -__test__ = {'API_TESTS':""" ->>> p1 = Person(first_name='Bugs', last_name='Bunny', fun=True) ->>> p1.save() ->>> p2 = Person(first_name='Droopy', last_name='Dog', fun=False) ->>> p2.save() ->>> Person.objects.get_fun_people() -[<Person: Bugs Bunny>] - -# The RelatedManager used on the 'books' descriptor extends the default manager ->>> from modeltests.custom_managers.models import PublishedBookManager ->>> isinstance(p2.books, PublishedBookManager) -True - ->>> b1 = Book(title='How to program', author='Rodney Dangerfield', is_published=True) ->>> b1.save() ->>> b2 = Book(title='How to be smart', author='Albert Einstein', is_published=False) ->>> b2.save() - -# The default manager, "objects", doesn't exist, -# because a custom one was provided. ->>> Book.objects -Traceback (most recent call last): - ... -AttributeError: type object 'Book' has no attribute 'objects' - -# The RelatedManager used on the 'authors' descriptor extends the default manager ->>> from modeltests.custom_managers.models import PersonManager ->>> isinstance(b2.authors, PersonManager) -True - ->>> Book.published_objects.all() -[<Book: How to program>] - ->>> c1 = Car(name='Corvette', mileage=21, top_speed=180) ->>> c1.save() ->>> c2 = Car(name='Neon', mileage=31, top_speed=100) ->>> c2.save() ->>> Car.cars.order_by('name') -[<Car: Corvette>, <Car: Neon>] ->>> Car.fast_cars.all() -[<Car: Corvette>] - -# 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". ->>> Car._default_manager.order_by('name') -[<Car: Corvette>, <Car: Neon>] -"""} diff --git a/tests/modeltests/custom_managers/tests.py b/tests/modeltests/custom_managers/tests.py new file mode 100644 index 0000000000..c17058cd73 --- /dev/null +++ b/tests/modeltests/custom_managers/tests.py @@ -0,0 +1,47 @@ +from django.test import TestCase + +from models import PersonManager, PublishedBookManager +from models import Person, Book, Car + +class CustomManagersTestCase(TestCase): + fixtures = ['custom_managers_testdata.json'] + + def test_related_manager(self): + self.assertQuerysetEqual(Person.objects.get_fun_people(), + ['<Person: Bugs Bunny>']) + + + # The RelatedManager used on the 'books' descriptor extends + # the default manager + p2 = Person.objects.get(first_name='Droopy') + self.assertTrue(isinstance(p2.books, PublishedBookManager)) + + + # The default manager, "objects", doesn't exist, because a + # custom one was provided. + self.assertRaises(AttributeError, + getattr, + Book, 'objects') + + + # The RelatedManager used on the 'authors' descriptor extends + # the default manager + b2 = Book(title='How to be smart', + author='Albert Einstein', + is_published=False) + b2.save() + + self.assertTrue(isinstance(b2.authors, PersonManager)) + self.assertQuerysetEqual(Book.published_objects.all(), + ['<Book: How to program>']) + + self.assertQuerysetEqual(Car.cars.order_by('name'), + ['<Car: Corvette>', '<Car: Neon>']) + self.assertQuerysetEqual(Car.fast_cars.all(), + ['<Car: Corvette>']) + + # 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'), + ['<Car: Corvette>', '<Car: Neon>']) |