Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[1.2.X] Migrate get_latest doctests. Thanks to Alex Gaynor.
Backport of r13783 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13800 bcc190cf-cafb-0310-a4f2-bffc1f526a37
- Loading branch information
1 parent
5b2ec25
commit 4395164
Showing
2 changed files
with
53 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |