Author: russellm Date: 2010-09-28 03:17:36 -0500 (Tue, 28 Sep 2010) New Revision: 13934
Added: django/trunk/tests/regressiontests/null_fk/tests.py Modified: django/trunk/tests/regressiontests/null_fk/models.py Log: Migrated null_fk doctests. Thanks to Stephan Jaekel. Modified: django/trunk/tests/regressiontests/null_fk/models.py =================================================================== --- django/trunk/tests/regressiontests/null_fk/models.py 2010-09-28 08:17:12 UTC (rev 13933) +++ django/trunk/tests/regressiontests/null_fk/models.py 2010-09-28 08:17:36 UTC (rev 13934) @@ -31,37 +31,3 @@ def __unicode__(self): return self.comment_text - -__test__ = {'API_TESTS':""" - ->>> d = SystemDetails.objects.create(details='First details') ->>> s = SystemInfo.objects.create(system_name='First forum', system_details=d) ->>> f = Forum.objects.create(system_info=s, forum_name='First forum') ->>> p = Post.objects.create(forum=f, title='First Post') ->>> c1 = Comment.objects.create(post=p, comment_text='My first comment') ->>> c2 = Comment.objects.create(comment_text='My second comment') - -# Starting from comment, make sure that a .select_related(...) with a specified -# set of fields will properly LEFT JOIN multiple levels of NULLs (and the things -# that come after the NULLs, or else data that should exist won't). Regression -# test for #7369. ->>> c = Comment.objects.select_related().get(id=1) ->>> c.post -<Post: First Post> ->>> c = Comment.objects.select_related().get(id=2) ->>> print c.post -None - ->>> comments = Comment.objects.select_related('post__forum__system_info').all() ->>> [(c.id, c.comment_text, c.post) for c in comments] -[(1, u'My first comment', <Post: First Post>), (2, u'My second comment', None)] - -# Regression test for #7530, #7716. ->>> Comment.objects.select_related('post').filter(post__isnull=True)[0].post is None -True - ->>> comments = Comment.objects.select_related('post__forum__system_info__system_details') ->>> [(c.id, c.comment_text, c.post) for c in comments] -[(1, u'My first comment', <Post: First Post>), (2, u'My second comment', None)] - -"""} Added: django/trunk/tests/regressiontests/null_fk/tests.py =================================================================== --- django/trunk/tests/regressiontests/null_fk/tests.py (rev 0) +++ django/trunk/tests/regressiontests/null_fk/tests.py 2010-09-28 08:17:36 UTC (rev 13934) @@ -0,0 +1,42 @@ +from django.test import TestCase + +from regressiontests.null_fk.models import * + +class NullFkTests(TestCase): + + def test_null_fk(self): + d = SystemDetails.objects.create(details='First details') + s = SystemInfo.objects.create(system_name='First forum', system_details=d) + f = Forum.objects.create(system_info=s, forum_name='First forum') + p = Post.objects.create(forum=f, title='First Post') + c1 = Comment.objects.create(post=p, comment_text='My first comment') + c2 = Comment.objects.create(comment_text='My second comment') + + # Starting from comment, make sure that a .select_related(...) with a specified + # set of fields will properly LEFT JOIN multiple levels of NULLs (and the things + # that come after the NULLs, or else data that should exist won't). Regression + # test for #7369. + c = Comment.objects.select_related().get(id=1) + self.assertEquals(c.post, p) + self.assertEquals(Comment.objects.select_related().get(id=2).post, None) + + self.assertQuerysetEqual( + Comment.objects.select_related('post__forum__system_info').all(), + [ + (1, u'My first comment', '<Post: First Post>'), + (2, u'My second comment', 'None') + ], + transform = lambda c: (c.id, c.comment_text, repr(c.post)) + ) + + # Regression test for #7530, #7716. + self.assertTrue(Comment.objects.select_related('post').filter(post__isnull=True)[0].post is None) + + self.assertQuerysetEqual( + Comment.objects.select_related('post__forum__system_info__system_details'), + [ + (1, u'My first comment', '<Post: First Post>'), + (2, u'My second comment', 'None') + ], + transform = lambda c: (c.id, c.comment_text, repr(c.post)) + ) -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.