summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-09-09 18:34:24 +0000
committerJannis Leidel <jannis@leidel.info>2011-09-09 18:34:24 +0000
commit8258fe7845afda1f6820d2ed385d281ced20c943 (patch)
treef3c4295e814dacdbe9c5e7355846b4ee1d552a3a /tests
parent64e16c094b3b4f551798f3dbff496fe5c6798f3b (diff)
Fixed #16042 -- Use the content types caching in the comments contrib app. Thanks, ptone, Julien Phalip and Thejaswi Puthraya.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16737 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/comment_tests/tests/templatetag_tests.py92
1 files changed, 83 insertions, 9 deletions
diff --git a/tests/regressiontests/comment_tests/tests/templatetag_tests.py b/tests/regressiontests/comment_tests/tests/templatetag_tests.py
index 0ee34ac670..99c3ca37fa 100644
--- a/tests/regressiontests/comment_tests/tests/templatetag_tests.py
+++ b/tests/regressiontests/comment_tests/tests/templatetag_tests.py
@@ -1,4 +1,7 @@
+from __future__ import with_statement
+
from django.contrib.comments.forms import CommentForm
+from django.contrib.comments.models import Comment
from django.contrib.contenttypes.models import ContentType
from django.template import Template, Context
from regressiontests.comment_tests.models import Article, Author
@@ -44,30 +47,41 @@ class CommentTemplateTagTests(CommentTestCase):
self.testRenderCommentFormFromObject()
self.assertNumQueries(1, test)
- def testGetCommentCount(self, tag=None):
- self.createSomeComments()
+ def verifyGetCommentCount(self, tag=None):
t = "{% load comments %}" + (tag or "{% get_comment_count for comment_tests.article a.id as cc %}") + "{{ cc }}"
ctx, out = self.render(t, a=Article.objects.get(pk=1))
self.assertEqual(out, "2")
+ def testGetCommentCount(self):
+ self.createSomeComments()
+ self.verifyGetCommentCount("{% get_comment_count for comment_tests.article a.id as cc %}")
+
def testGetCommentCountFromLiteral(self):
- self.testGetCommentCount("{% get_comment_count for comment_tests.article 1 as cc %}")
+ self.createSomeComments()
+ self.verifyGetCommentCount("{% get_comment_count for comment_tests.article 1 as cc %}")
def testGetCommentCountFromObject(self):
- self.testGetCommentCount("{% get_comment_count for a as cc %}")
+ self.createSomeComments()
+ self.verifyGetCommentCount("{% get_comment_count for a as cc %}")
- def testGetCommentList(self, tag=None):
- c1, c2, c3, c4 = self.createSomeComments()
- t = "{% load comments %}" + (tag or "{% get_comment_list for comment_tests.author a.id as cl %}")
+ def verifyGetCommentList(self, tag=None):
+ c1, c2, c3, c4 = Comment.objects.all()[:4]
+ t = "{% load comments %}" + (tag or "{% get_comment_list for comment_tests.author a.id as cl %}")
ctx, out = self.render(t, a=Author.objects.get(pk=1))
self.assertEqual(out, "")
self.assertEqual(list(ctx["cl"]), [c2])
+ def testGetCommentList(self):
+ self.createSomeComments()
+ self.verifyGetCommentList("{% get_comment_list for comment_tests.author a.id as cl %}")
+
def testGetCommentListFromLiteral(self):
- self.testGetCommentList("{% get_comment_list for comment_tests.author 1 as cl %}")
+ self.createSomeComments()
+ self.verifyGetCommentList("{% get_comment_list for comment_tests.author 1 as cl %}")
def testGetCommentListFromObject(self):
- self.testGetCommentList("{% get_comment_list for a as cl %}")
+ self.createSomeComments()
+ self.verifyGetCommentList("{% get_comment_list for a as cl %}")
def testGetCommentPermalink(self):
c1, c2, c3, c4 = self.createSomeComments()
@@ -99,3 +113,63 @@ class CommentTemplateTagTests(CommentTestCase):
def testRenderCommentListFromObject(self):
self.testRenderCommentList("{% render_comment_list for a %}")
+ def testNumberQueries(self):
+ """
+ Ensure that the template tags use cached content types to reduce the
+ number of DB queries.
+ Refs #16042.
+ """
+
+ self.createSomeComments()
+
+ # {% render_comment_list %} -----------------
+
+ # Clear CT cache
+ ContentType.objects.clear_cache()
+ with self.assertNumQueries(4):
+ self.testRenderCommentListFromObject()
+
+ # Force the CT to be cached
+ ct = ContentType.objects.get_for_model(Article)
+ with self.assertNumQueries(3):
+ self.testRenderCommentListFromObject()
+
+ # {% get_comment_list %} --------------------
+
+ ContentType.objects.clear_cache()
+ with self.assertNumQueries(4):
+ self.verifyGetCommentList()
+
+ ct = ContentType.objects.get_for_model(Author)
+ with self.assertNumQueries(3):
+ self.verifyGetCommentList()
+
+ # {% render_comment_form %} -----------------
+
+ ContentType.objects.clear_cache()
+ with self.assertNumQueries(3):
+ self.testRenderCommentForm()
+
+ ct = ContentType.objects.get_for_model(Article)
+ with self.assertNumQueries(2):
+ self.testRenderCommentForm()
+
+ # {% get_comment_form %} --------------------
+
+ ContentType.objects.clear_cache()
+ with self.assertNumQueries(3):
+ self.testGetCommentForm()
+
+ ct = ContentType.objects.get_for_model(Article)
+ with self.assertNumQueries(2):
+ self.testGetCommentForm()
+
+ # {% get_comment_count %} -------------------
+
+ ContentType.objects.clear_cache()
+ with self.assertNumQueries(3):
+ self.verifyGetCommentCount()
+
+ ct = ContentType.objects.get_for_model(Article)
+ with self.assertNumQueries(2):
+ self.verifyGetCommentCount()