From 14a5e62f86d26991476e8dfb3541797d68369e5f Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sun, 12 Sep 2010 20:04:12 +0000 Subject: [PATCH] Migrate get_latest doctests. Thanks to Alex Gaynor. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13783 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/get_latest/models.py | 49 ------------------------- tests/modeltests/get_latest/tests.py | 53 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 49 deletions(-) create mode 100644 tests/modeltests/get_latest/tests.py diff --git a/tests/modeltests/get_latest/models.py b/tests/modeltests/get_latest/models.py index 624f3a879a..1eeb299267 100644 --- a/tests/modeltests/get_latest/models.py +++ b/tests/modeltests/get_latest/models.py @@ -28,52 +28,3 @@ class Person(models.Model): def __unicode__(self): return self.name - -__test__ = {'API_TESTS':""" -# Because no Articles exist yet, latest() raises ArticleDoesNotExist. ->>> Article.objects.latest() -Traceback (most recent call last): - ... -DoesNotExist: Article matching query does not exist. - -# Create a couple of Articles. ->>> from datetime import datetime ->>> a1 = Article(headline='Article 1', pub_date=datetime(2005, 7, 26), expire_date=datetime(2005, 9, 1)) ->>> a1.save() ->>> a2 = Article(headline='Article 2', pub_date=datetime(2005, 7, 27), expire_date=datetime(2005, 7, 28)) ->>> a2.save() ->>> a3 = Article(headline='Article 3', pub_date=datetime(2005, 7, 27), expire_date=datetime(2005, 8, 27)) ->>> a3.save() ->>> a4 = Article(headline='Article 4', pub_date=datetime(2005, 7, 28), expire_date=datetime(2005, 7, 30)) ->>> a4.save() - -# Get the latest Article. ->>> Article.objects.latest() - - -# Get the latest Article that matches certain filters. ->>> Article.objects.filter(pub_date__lt=datetime(2005, 7, 27)).latest() - - -# Pass a custom field name to latest() to change the field that's used to -# determine the latest object. ->>> Article.objects.latest('expire_date') - - ->>> Article.objects.filter(pub_date__gt=datetime(2005, 7, 26)).latest('expire_date') - - -# You can still use latest() with a model that doesn't have "get_latest_by" -# set -- just pass in the field name manually. ->>> p1 = Person(name='Ralph', birthday=datetime(1950, 1, 1)) ->>> p1.save() ->>> p2 = Person(name='Stephanie', birthday=datetime(1960, 2, 3)) ->>> p2.save() ->>> Person.objects.latest() -Traceback (most recent call last): - ... -AssertionError: latest() requires either a field_name parameter or 'get_latest_by' in the model - ->>> Person.objects.latest('birthday') - -"""} diff --git a/tests/modeltests/get_latest/tests.py b/tests/modeltests/get_latest/tests.py new file mode 100644 index 0000000000..3c3588bba0 --- /dev/null +++ b/tests/modeltests/get_latest/tests.py @@ -0,0 +1,53 @@ +from datetime import datetime + +from django.test import TestCase + +from models import Article, Person + + +class LatestTests(TestCase): + def test_latest(self): + # Because no Articles exist yet, latest() raises ArticleDoesNotExist. + self.assertRaises(Article.DoesNotExist, Article.objects.latest) + + a1 = Article.objects.create( + headline="Article 1", pub_date=datetime(2005, 7, 26), + expire_date=datetime(2005, 9, 1) + ) + a2 = Article.objects.create( + headline="Article 2", pub_date=datetime(2005, 7, 27), + expire_date=datetime(2005, 7, 28) + ) + a3 = Article.objects.create( + headline="Article 3", pub_date=datetime(2005, 7, 27), + expire_date=datetime(2005, 8, 27) + ) + a4 = Article.objects.create( + headline="Article 4", pub_date=datetime(2005, 7, 28), + expire_date=datetime(2005, 7, 30) + ) + + # Get the latest Article. + self.assertEqual(Article.objects.latest(), a4) + # Get the latest Article that matches certain filters. + self.assertEqual( + Article.objects.filter(pub_date__lt=datetime(2005, 7, 27)).latest(), + a1 + ) + + # Pass a custom field name to latest() to change the field that's used + # to determine the latest object. + self.assertEqual(Article.objects.latest('expire_date'), a1) + self.assertEqual( + Article.objects.filter(pub_date__gt=datetime(2005, 7, 26)).latest('expire_date'), + a3, + ) + + def test_latest_manual(self): + # You can still use latest() with a model that doesn't have + # "get_latest_by" set -- just pass in the field name manually. + p1 = Person.objects.create(name="Ralph", birthday=datetime(1950, 1, 1)) + p2 = Person.objects.create(name="Stephanie", birthday=datetime(1960, 2, 3)) + self.assertRaises(AssertionError, Person.objects.latest) + + self.assertEqual(Person.objects.latest("birthday"), p2)