app/django/contrib/contenttypes/tests.py
changeset 54 03e267d67478
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/contrib/contenttypes/tests.py	Fri Jul 18 18:22:23 2008 +0000
@@ -0,0 +1,47 @@
+"""
+Make sure that the content type cache (see ContentTypeManager) works correctly.
+Lookups for a particular content type -- by model or by ID -- should hit the
+database only on the first lookup.
+
+First, let's make sure we're dealing with a blank slate (and that DEBUG is on so
+that queries get logged)::
+
+    >>> from django.conf import settings
+    >>> settings.DEBUG = True
+
+    >>> from django.contrib.contenttypes.models import ContentType
+    >>> ContentType.objects.clear_cache()
+
+    >>> from django import db
+    >>> db.reset_queries()
+    
+At this point, a lookup for a ContentType should hit the DB::
+
+    >>> ContentType.objects.get_for_model(ContentType)
+    <ContentType: content type>
+    
+    >>> len(db.connection.queries)
+    1
+
+A second hit, though, won't hit the DB, nor will a lookup by ID::
+
+    >>> ct = ContentType.objects.get_for_model(ContentType)
+    >>> len(db.connection.queries)
+    1
+    >>> ContentType.objects.get_for_id(ct.id)
+    <ContentType: content type>
+    >>> len(db.connection.queries)
+    1
+
+Once we clear the cache, another lookup will again hit the DB::
+
+    >>> ContentType.objects.clear_cache()
+    >>> ContentType.objects.get_for_model(ContentType)
+    <ContentType: content type>
+    >>> len(db.connection.queries)
+    2
+
+Don't forget to reset DEBUG!
+
+    >>> settings.DEBUG = False
+"""
\ No newline at end of file